#所谓面试题public static void main(String... strings) {Integer integer1 = 3;Integer integer2 = 3;if (integer1 == integer2)System.out.println("integer1 == integer2");elseSystem.out.println("integer1 != integer2");Integer integer3 = 300;Integer integer4 = 300;if (integer3 == integer4)System.out.println("integer3 == integer4");elseSystem.out.println("integer3 != integer4");}输出结果如下:
integer1 == integer2
integer3 != integer4原因分析:
注:包装类拆箱使用:XXXinitValue 。装箱使用 Integer.valueOf()方法
这里涉及到的构造时的缓存机制,在执行Integer.valueOf()方法时,如果没有超过-128-127之间的范围
则默认值使用 Integer的 Integer cache[]缓存数组的值,超过该范围才会new Integer 对象!
Integer 的 valueOf()代码如下:
public static Integer valueOf(int i) {if (i >= IntegerCache.low && i <= IntegerCache.high)return IntegerCache.cache[i + (-IntegerCache.low)];return new Integer(i);}
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!