Integer i1 = 100;
Integer i2 = 100;
Integer i3 = 200;
Integer i4 = 200;
Integer i5 = i1 + i2;
Integer i6=50;
Integer i7 =100;
Integer i8 = 150;
Integer i9 = i7+i6;
Double j1 =0.1;
Double j2 = 0.2;
Double j3 = 0.3;
Double j4 = j1+j2;
int k1 =100;
int k2 =200;
System.out.println(i1 == i1);
System.out.println(i3 == i4);
System.out.println(i3 == i5);
System.out.println(i8==i9);
System.out.println(i8==i7+i6);
System.out.println(j3==j1+j2);
System.out.println(j3==j4);
System.out.println(i1==k1);
System.out.println(i3==k2);
System.out.println(k2==i1+i2);
// true
// false
// false
// false
// true
// false
// false
// true
// true
// true
public static Integer valueOf(int i) {
if (i >= IntegerCache.low && i <= IntegerCache.high)
return IntegerCache.cache[i + (-IntegerCache.low)];
return new Integer(i);
}
总结:
1.Integer类型,数值在 【-128,127】之间返回就取得是catche中,超过这个数值就创建新的对象
2.关于加号,如果赋给一个新的变量做比较就是false,如果直接相加比较,则为true
3,double的任何比较都为false,哪怕是数值相加
4.int类型和Integer类型之间的比较都会被自动装拆箱,正常比较