Integer装箱与拆箱
装箱:
Integer i = 10;
相当于:Integer i = Integer.valueOf(10);
拆箱:
Integer i = 10; //装箱
int t = i; //拆箱,实际上执行了 int t = i.intValue();
另:
- Integer与int使用==进行比较,对Interger进行拆箱
- Interger会缓存-128~127的值,部分源码如下:
public static Integer valueOf(int i) { if (i >= IntegerCache.low && i <= IntegerCache.high) return IntegerCache.cache[i + (-IntegerCache.low)]; return new Integer(i); }
所以有如下结果:
int i = 10; Integer j = new Integer(10); Integer k = 10; Integer s = Integer.valueOf(10); System.out.println(i == j); //true System.out.println(j == k); //false System.out.println(k == s); //true System.out.println(j.equals(i)); //true