我有这段代码:
int i = 128;
Integer a = i;
Integer b = i;
System.out.println("a==i " + (a == i)); // true
System.out.println("b==i " + (b == i)); // true
System.out.println("a==b " + (a == b)); // false
System.out.println("equals ->" + a.equals(i)
+ b.equals(i)
+ a.equals(b)); // true, true, true
然后我将变量i更改为127:
int i = 127;
Integer a = i;
Integer b = i;
System.out.println("a==i " + (a == i)); // true
System.out.println("b==i " + (b == i)); // true
System.out.println("a==b " + (a == b)); // true !!! look here
System.out.println("equals ->" + a.equals(i)
+ b.equals(i)
+ a.equals(b)); // true, true, true
我不明白,为什么“真实”改为“假”?
答案 0 :(得分:0)
与记忆有关
为了节省内存,Java'重用'所有包装器对象的值 属于以下范围:
所有布尔值(true和false)
所有字节值
从\ u0000到\ u007f的所有字符值(即十进制中的0到127)
从-128到127的所有短整数和整数值。
-128到127之间的长值。