读书人

封装类比较出现的有关问题

发布时间: 2012-10-12 10:17:04 作者: rapoo

封装类比较出现的问题

?????? Java为了性能提供了一个类似缓存的东西,不仅仅是Integer,Long也有同样的缓存,在内存中定义了一个长度为 255的对象数组,装箱之前先比较一下,如果是在-128-127范围内就直接取,所以只要是-128~127之间的取的都是一个对象,是true了,-128~127之外的就会重新new对象。

public class IntegerTest {/** * @param args */public static void main(String[] args) {Integer i1 = 10;Integer i2 = 10;System.out.println(i1 == i2); // true//直接生成新的对象,不会从在缓存中获取Integer i3 = new Integer(10);Integer i4 = new Integer(10);System.out.println(i3 == i4); // falseInteger i5 = 0;System.out.println(i1 == i2 + i5);// true//在i4+i5运算前,先进行了拆箱操作,所以比较的是内容System.out.println(i3 == i4 + i5);// trueInteger i6 = 128;Integer i7 = 128;System.out.println(i6 == i7); // falseInteger i8 = -129;Integer i9 = -129;System.out.println(i8 == i9); // false}}
?

读书人网 >编程

热点推荐