Integer.valueof()细节
Integer i = new Integer(1);
Integer j = new Integer(1);
System.out.println(i == j); //不是同一个对象 FALSE
Integer m = 1; //Integer.valueOf(1);
Integer n = 1;//Integer.valueOf(1);
System.out.println( m == n); //直接返回 true (Integer.catch数组)
Integer x = 128;
Integer y = 128;
System.out.println(x == y); // new的 false
Integer a1 = 127;
int a2 = 127;
System.out.println(a1 == a2); //true 只要有基本数据类型,判断的是值相等
/*
Integer.valueOf 源码
int i 的范围 -128 ~ 127 直接返回 否则就 new
*/
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}