autoboxing wth ++, - java中的运算符

时间:2014-03-14 05:02:35

标签: java autoboxing

我对java中的自动装箱拆箱感到困惑。请参阅我的以下两个程序。

Integer x = 400;
Integer y = x;
x++; x--;
System.out.println((x==y));

The output is false. 
I known why the output is false. Because of autoboxing x.

Integer x = 100;
Integer y = x;
x++; x--;
System.out.println((x==y));

The output is true.
But the program is same as the upper. Why the output is true? 
Please explain me detail.

非常感谢。

1 个答案:

答案 0 :(得分:1)

这是因为Integers -128到127被缓存,所以在第二个例子中,x和y引用相同的Integer实例。

Integer x = 100;          // x refers to cached 100
x++; 

相当于

int var = x.intValue();
var++;
x = Integer.valueOf(var);  // returns cached 100

请参阅Integer.valueOf(int)API。