- Java code
public class Test{ public static void main(String[] args){ Integer a = 100 ; Integer b = 100 ; Integer a2 = 200; Integer b2 = 200; System.out.println (a==b); System.out.println (a2==b2); }}
输出的结果是true ,false 不知道为什么
------解决方案--------------------
Integer的范围在 [-128,127]
直接赋值的Integer当值的范围的时候,
不会生成新的对象,直接把缓存中的对象拿来用
可以看看Integer的源代码 里面有实现
------解决方案--------------------
你调试进去就知道了,Integer会自动缓存[-128,127]之间的Integer对象,
而Integer a=100调用的是函数Integer.valueOf(int),该函数对于这个
范围内的整数缓存起来并返回同一个实例,而之外的则每次创建一个新对象
------解决方案--------------------
我用程序运行了一遍,结果和楼主所说的一样。
在调试的过程中发现,装包中的Integer的自动缓存在[-128,127]之间,与前面三楼和六楼说的一样,如果超出这个范围,则比较的值结果为FALSE;否则为TRUE。
------解决方案--------------------
- Java code
Integer a = 100 ; Integer b = 100 ; Integer a2 = 200 ; Integer b2 = 200 ; Integer a3 = new Integer(100) ; Integer b3 = new Integer(100) ; System.out.println (a==b); System.out.println (a2==b2); System.out.println(a3==b3);
------解决方案--------------------
我是来学习地!!!
------解决方案--------------------
关键是两段代码,一个是valueOf方法实现boxing(可以从字节码中看出来调用了这个方法)
- Java code
public static Integer valueOf(int i) { final int offset = 128; if (i >= -128 && i <= 127) { // must cache return IntegerCache.cache[i + offset]; } return new Integer(i); }
------解决方案--------------------
学习了
------解决方案--------------------
------解决方案--------------------
头一次见,学习了!
------解决方案--------------------
这里果然是学习的好地方!我都看了一遍,虽然不懂,但觉得9楼的说法应该是正确的.
------解决方案--------------------
byte 类型的数据会被系统缓冲,也就是共享。
所以 128以内的都会这样。 你可以测试看看
127 = true
128 = false;
没啥特殊的
------解决方案--------------------
Integer会自动缓存[-128,127]之间的Integer对象
------解决方案--------------------
楼上说的虽然也有道理,但是和题目不相关啊~
学习了·~
------解决方案--------------------
以前还真没注意过这个,学习了……
------解决方案--------------------
首先
- Java code
public class Test { public static void main(String[] args) { Integer a = 100; //自动包装(或叫自动装箱) Integer b = 100; //编译器会将其处理成 Integer b = Integer.valueOf(100); Integer a2 = 200; Integer b2 = 200; System.out.println (a == b); System.out.println (a2 == b2); }}
------解决方案--------------------
哦,看到楼上的,明白了,学习了
------解决方案--------------------