Java知识点总结(一)---int与Integer的区别
2015-04-21 17:10
429 查看
当大家被问及int与Integer的区别时,相信大家都能答出两个来:
Integer是int的包装类
Integer的初始值是null,而int的初始值是0;
但如果有下面一个问题:
假如有下面的程序:
解释一下:
为什么第八行跟第九行都是true?因为int类型的数据跟Integer比较的话,Integer不管是new还是不new,Integer都会用到java的拆箱(jdk1.5以上)转换成int类型的数据再与所给的int类型的数据进行比较,所以是true
为什么第13行是true,而第21行是false?这是因为,java在编译
你会发现对于-128到127之间的数,会进行缓存,Integer i4 = 127时,会将127进行缓存,下次再写Integer i5 = 127时,就会直接从缓存中取,就不会new了。i4跟i5所指向的同一个对象,而i6跟i7所指向的两个对象,所以13行的结果为true,而21行为false。
第17跟25行就不解释了,他们指向的是不同的对象,所以都为false;
Integer是int的包装类
Integer的初始值是null,而int的初始值是0;
但如果有下面一个问题:
Integer i1 = new Integer(1); int i2 = 1 ;问
i1 == i2吗?肯定有相当一部分人是答不出来的,下面我就来总结一下:
假如有下面的程序:
public class TestInteger { public static void main(String[] args) { int i1 = 128; Integer i2 = 128; Integer i3 = new Integer(128); System.out.println(i1 == i2);//true System.out.println(i1 == i3);//true Integer i4 = 127; Integer i5 = 127; System.out.println(i4 == i5);//true Integer i6 = 127; Integer i7 = new Integer(127); System.out.println(i6 == i7);//false Integer i8 = 128; Integer i9 = 128; System.out.println(i8 == i9);//false Integer i10 = new Integer(127); Integer i11 = new Integer(127); System.out.println(i10 == i11);//false } }
解释一下:
为什么第八行跟第九行都是true?因为int类型的数据跟Integer比较的话,Integer不管是new还是不new,Integer都会用到java的拆箱(jdk1.5以上)转换成int类型的数据再与所给的int类型的数据进行比较,所以是true
为什么第13行是true,而第21行是false?这是因为,java在编译
Integer i = 127的时候,被翻译成
Integer i5 = Integer.valueOf(127);,这样我们就得去看一下valueOf(int i)这个方法了:
public static Integer valueOf(int i) { assert IntegerCache.high >= 127; if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
你会发现对于-128到127之间的数,会进行缓存,Integer i4 = 127时,会将127进行缓存,下次再写Integer i5 = 127时,就会直接从缓存中取,就不会new了。i4跟i5所指向的同一个对象,而i6跟i7所指向的两个对象,所以13行的结果为true,而21行为false。
第17跟25行就不解释了,他们指向的是不同的对象,所以都为false;
相关文章推荐
- Java知识点<3> int与integer的区别
- 个人整理总结:java面试题之int和Integer的区别
- Java的Integer和int的区别
- java中int和Integer的区别
- Java--int与Integer的区别
- [厉害了,我的JAVA基础](四)int 和 Integer 有什么区别?Integer的值缓存范围
- Java基础知识学习巩固2--int和Integer有什么区别及扩展
- Java的Integer和int有什么区别
- Java的Integer和int有什么区别
- java面试题之int和Integer的区别
- Java中 int与integer的区别
- java面试题之int和Integer的区别
- java java面向对象-Integer与int的区别
- Java Int和Integer有什么区别?
- Java int与Integer的区别
- java int与integer的区别
- java int与integer的区别
- java int与integer的区别
- java int与integer的区别
- java int与integer的区别