java 为什么100==100成立而1000==1000不成立?

如果两个引用指向同一个对象,那么==成立;反之,不成立,那么为什么1000==1000返回false。
 
Integer a = 1000, b = 1000;
System.out.println(a == b);//1
Integer c = 100, d = 100;
System.out.println(c == d);//2

输出结果是:false、true

原因:
Integer.java类,它为-128到127直接所有的整数进行缓存;
为什么是-127到128的整数范围呢?
这是因为在这个范围内的小数值整数在日常生活中的使用频率要比其它的大得多,多次使用相同的底层对象这一特性可以通过该设置进行有效的内存优化。你可以使用reflection API任意使用这个功能。

posted on 2016-12-06 15:24  天露  阅读(92)  评论(0)    收藏  举报

导航