java中Integer的细节【面试】
本文主要讲述Integer包装类的细节,通过创建Integer类的方式不同,探讨区别
示例代码如下:
1 public class IntegerExercise { 2 public static void main(String[] args) { 3 Integer num1 = new Integer(1); 4 Integer num2 = new Integer(1); 5 System.out.println(num1 == num2); // false 6 7 /* 8 IntegerCache.low:-128 9 IntegerCache.high:127 10 当i在-127到128范围内,在cache数组中取出 11 当i不在范围内,new Integer(i) 12 */ 13 /* 14 public static Integer valueOf(int i) { 15 if (i >= IntegerCache.low && i <= IntegerCache.high) 16 return IntegerCache.cache[i + (-IntegerCache.low)]; 17 return new Integer(i); 18 } 19 */ 20 // 由于i=1,在-128到127范围内,在cache数组中取值,仍是常量 21 Integer s1 = 1; // 自动封箱 22 Integer s2 = 1; 23 System.out.println(s1 == s2); // true 24 25 // 128不在-128到127范围内,new Integer(128) 26 Integer n1 = 128; 27 Integer n2 = 128; 28 System.out.println(n1 == n2); // false 29 } 30 }