- Integer integer3 = 200;
- Integer integer4 = 200;
- System.out.println("integer3==integer4: " + (integer3 == integer4));// false 自动装箱的两个new Integer的引用比较
- //红色的这两行代码输出结果为什么不同,谁可以给我详解,谢谢啦
复制代码 JDK1.5后,对于Integer 对象的值如果没有超byte 的范围-128-127的后,就不会new ,内存里有的话,就直接使用
所以
- Integer integer1 = 100;
- Integer integer2 = 100;
- System.out.println("integer1==integer2: " + (integer1 == integer2));// true 自动装箱的两个缓存中的 Integer对象的引用比较
复制代码
便是一旦超过byte范围-128-127,不管有没有都有new
- Integer integer3 = 200;// new Integer(200)
- Integer integer4 = 200;//new Integer(200)
复制代码 只是省了自动装箱,等于new 了一个新的对象,所以==是false
|