基本类型与包装类型的主要区别在于以下三个方面:

1、基本类型只有值,而包装类型则具有与它们的值不同的同一性(identity)。这个同一性是指,两个引用是否指向同一个对象,如果指向同一个对象,则说明具有同一性。(与此类似的还有等同性。)

2、基本类型只有功能完备的值,而包装类型除了其对应的基本类型所有的功能之外,还有一个非功能值:null。

3、基本类型通常比包装类型更节省时间与空间。

 1 package com;2 3 import java.util.Comparator;4 5 /**6  * Created by huyanxia on 2017/11/27.7  */8 public class TestInteger {9     public static Integer i;
10
11     public static void main(String[] args) {
12         Integer a = i;
13         //int j = i;
14         /* 1.因为Integer转换为int时,会首先进行自动拆箱,但是若为null,就会出现空指针异常*/
15         //输出null,Integer默认为null
16         System.out.println("输出" + a);
17         //java.lang.NullPointerException
18         System.out.println("输出" + i);
19         /* 2.因为执行first < second 时,会自动拆箱,再执行first == second时会执行同一性(引用是否指向同一个对象,若是为true)
20         比较,即first和second引用表示同一个int 值的不同的Interger实例,那么就会返回false,比较器就会错误的返回1*/
21         //大小1;
22         System.out.println("大小" + order.compare(new Integer(42), new Integer(42)));
23         //大小0
24         System.out.println("大小" + order.compare(42, 42));
25
26         /* 3.Integer的常量池是由-128至127组成。当我们给一个Integer赋的值在这个范围之类时就直接会从缓存返回一个相同的引用,
27          所以m1 == n1,m3 == n3会输出true。而超过这个范围时,就会重新new一个对象。因此,m == n,m4 == n4就会输出一个false。*/
28         // false
29         Integer m = 980;
30         Integer n = 980;
31         System.out.println("结果:" + (m == n));
32         //true
33         Integer m1 = 127;
34         Integer n1 = 127;
35         System.out.println("结果:" + (m1 == n1));
36         //false
37         Integer m2 = 128;
38         Integer n2 = 128;
39         System.out.println("结果:" + (m2 == n2));
40         //true
41         Integer m3 = -128;
42         Integer n3 = -128;
43         System.out.println("结果:" + (m3 == n3));
44         //false
45         Integer m4 = -129;
46         Integer n4 = -129;
47         System.out.println("结果:" + (m4 == n4));
48         /* 4.基本类型只有值,而包装类型则具有与它们的值不同的同一性(identity)。这个同一性是指,两个引用是否指向同一个对象,
49         如果指向同一个对象,则说明具有同一性。(与此类似的还有等同性。)*/
50         //false
51         Integer m5 = new Integer(127);
52         Integer n5 = new Integer(127);
53         System.out.println("结果:" + (m5 == n5));
54
55         /* 5.基本类型通常比包装类型更节省时间与空间。因为,在声明sum变量的时候,一不小心声明为Long,
56           而不是long。这样,在这个循环当中就会不断地装箱和拆箱,其性能也会明显的下降。但是,将Long改成long时间消耗会缩短很多*/
57         //4999950000,时间:14ms
58         long startTime = System.currentTimeMillis();
59         Long sum = 0L;
60         for(long i = 0;i < 100000; i++){
61             sum +=i;
62         }
63         System.out.println(sum + ",时间:" + (System.currentTimeMillis() - startTime) + "ms");
64
65         //4999950000,时间:3ms
66         long startTime1 = System.currentTimeMillis();
67         long sum1 = 0;
68         for(long i = 0;i < 100000;i++){
69             sum1 +=i;
70         }
71         System.out.println(sum1 + ",时间:" + (System.currentTimeMillis() - startTime1) + "ms");
72
73        /* 因为int的最大值为 2147483647,而累加超过 2147483647,就会变成负数,所以int的累加结果小*/
74         //704982704,时间:7ms
75         long startTime2 = System.currentTimeMillis();
76         Integer sum2 = 0;
77         for(int i = 0;i < 100000;i++){
78             sum2 +=i;
79         }
80         System.out.println(sum2 + ",时间:" + (System.currentTimeMillis() - startTime2) + "ms");
81
82         //704982704,时间:2ms
83         long startTime3 = System.currentTimeMillis();
84         int sum3 = 0;
85         for(int i = 0;i < 100000;i++){
86             sum3 +=i;
87         }
88         System.out.println(sum3 + ",时间:" + (System.currentTimeMillis() - startTime3) + "ms");
89     }
90     static Comparator<Integer> order = new Comparator<Integer>() {
91         @Override
92         public int compare(Integer first, Integer second) {
93             return first < second ? -1 : (first == second ? 0 : 1);
94         }
95     };
96 }

适合包装类型的三个情况:

1、作为集合中的元素、键和值。
2、在参数化类型中。比如:你不能这样写——ArryList<int>,你只能写ArrayList<Integer>.
3、在进行反射方法的调用时。

基本类型优先于装箱基本类型相关推荐

  1. java中包装类型,自动装箱与自动拆箱简述

    首先介绍一下什么是包装类型 8种基本类型 :byte   short   int   long   float   double   boolean   char 在java语言中,包装类型就是,通过 ...

  2. Java 基本类型与自动装箱、拆箱

    基本数据类型 基本类型,或者叫内置类型,是 Jav 中不同于类(class)的特殊类型.它们是我们编程中使用最频繁的类型. Java 是一种强类型语言,第一次申明必须说明数据类型,第一次变量赋值称为变 ...

  3. Java中的基本类型与封装类型以及自动装箱、拆箱

    Java中的类型分为原始类型和对应的封装类型(装箱类型),基本类型包括byte字节型(一个字节).char字符型(两个字节).short短整型(两个字节).int整型(四个字节).long长整型(八个 ...

  4. 跟小静读CLR via C#(02)-基元类型、引用类型、值类型

    跟小静读CLR via C#(02)-基元类型.引用类型.值类型 一. 基元类型 编译器能够直接支持的数据类型叫做基元类型.例如int, string等.基元类型和.NET框架类库FCL存在着直接的映 ...

  5. 第五章 基元类型、引用类型、值类型 CLR学习第五课

    一.基元类型:编译器直接支持的数据类型称为基元类型(如int类型其对于的是system.int32). 二.类型溢出,可以用checked 和unchecked进行类型溢出检查和不进行类型溢出检查.一 ...

  6. 第五章 基元类型,引用类型和值类型

    目录 5.1 编程语言的基元类型 5.2 引用类型和值类型 5.3 值类型的装箱和拆箱 5.4 对象哈希码 5.5 dynamic基元类型 5.1 编程语言的基元类型 编译器直接支持的数据类型称为基元 ...

  7. 《CLR via C#》读书笔记 之 基元类型、引用类型和值类型

    第五章 基元类型.引用类型和值类型 2013-02-27 5.3 值类型的装箱和拆箱     5.3.2 对象的相等性和同一性 参考 ToDo: 什么时候使用值类型,什么时候使用引用类型 5.3 值类 ...

  8. java 值类型与引用类型_Java值类型和引用类型的区别

    似乎"值类型和引用类型的区别"是今年面试的流行趋势,我已然是连续三次(目前总共也就三次)面试第一个问题就遇到这个了,这是多大的概率啊,100%,哈哈,我该买彩票去! 言归正传,咱还 ...

  9. CLR via C#-基元类型、引用类型和值类型

    理解不同的类型之间的区别,可以提高编码效率. 基元类型(primitive type) 编辑器直接支持的数据成为基元类型 int => System.Int32 sbyte.byte.short ...

最新文章

  1. PAT甲级1038 Recover the Smallest Number (30 分):[C++题解]贪心、排列成最小的数、字符串
  2. ReentrantLock与公平锁、非公平锁实现
  3. 成功解决SyntaxError: (unicode error) ‘unicodeescape‘ codec can‘t decode bytes in position 0-1: malformed
  4. CnetOS中开关网络服务
  5. 系统功能图怎么画_[分享]照明系统图和照明平面图怎么看?系统讲解
  6. Python第三方包-你了解numpy吗(numpy基础)
  7. c#中设计器中窗体释放  protected override void Dispose(bool disposing)改写解决部分窗体线程释放不彻底问题
  8. 软件开发中需要专职的 QA 吗?
  9. 使用图形窗口连接(navicat)
  10. opencv双目视觉标定、匹配和测量 (附代码)(转载)
  11. SecureCRT-SecureCRT如何保存界面的日志信息
  12. Postgres 数据库字符集更改 ERROR: new encoding (UTF8) is incompatible
  13. ppt转pdf软件免费版
  14. iOS地图 -- 定位初使用
  15. 推荐电影 历年佳片有约电影 1998-2007
  16. MySQL联合创始人向Sun递交辞呈
  17. 【安信可NB-IoT模组EC系列AT指令应用笔记④】将设备位置接入阿里云地图,实现空间数据可视化
  18. 计算机网络状态不存在,IP地址是什么?我地电脑上不去网,有时显示IP地址不存在是怎么了...
  19. node04-buffer
  20. HTTP请求报文和HTTP响应报文

热门文章

  1. java轻松实现无锁队列
  2. 关于javafx支持IOS、android等智能手机解决方案
  3. 深度学习第五课-训练注意事项与框架使用
  4. [密码学基础][每个信息安全博士生应该知道的52件事][Bristol Cryptography][第31篇]Game Hopping证明
  5. [剑指offer][JAVA]面试题第[27]题[二叉树的镜像][递归][栈]
  6. 计算机配置对电子竞技的影响,配置高并不是唯一优点 看看电竞硬件还要啥?...
  7. oracle分区表扩分区 很慢,升级oracle10g 大分区表update变慢
  8. 一台电脑同时启动多个java_如何在一台同时登录多个微信?
  9. matlab程序设计图像匹配,灰度,归一化算法,快速匹配。有代码好用。转载
  10. java与android https,java – Https连接Android