看程序写结果 (1) Integer i1 = new Integer(97); //变量为对象的,地址值肯定不是相同的 Integer i2 = new Integer(97); System.out.println(i1 == i2); //false System.out.println(i1.equals(i2)); //true System.out.println("-----------"); (2) Integer i3 = new Integer(197); Integer i4 = new Integer(197); System.out.println(i3 == i4); //false System.out.println(i3.equals(i4)); //true System.out.println("-----------"); (3) Integer i5 = 97; Integer i6 = 97; System.out.println(i5 == i6); //true //只要在byte范围内,-128~127, 常量的引用必定相等 System.out.println(i5.equals(i6)); //true System.out.println("-----------"); (4) Integer i7 = 197; //如果超过了这个范围,那么自动装箱就会创建新的对象 Integer i8 = 197; //超过了就是创建对象,肯定不是相等的 System.out.println(i7 == i8); //false System.out.println(i7.equals(i8)); //true
byte常量池: -128到127是byte的取值范围,如果在这个取值范围内,自动装箱就不会新创建对象,而是从常量池中获取,如果超过了byte取值范围就会再新创建对象。
|