1
class G2 {
public static void main(String[] args) 
{   
 Short u = 127;
 Short v = 127;
 System.out.println(u==v);
 System.out.println(u!=v);
 Short u1 = 129;
 Short v1 = 129;
 System.out.println(u1==v1);
 System.out.println(u1!=v1);
}
}

我知道当范围在 -128 到 127 之间时 == 运算符匹配对象内部的内容或值,否则对象引用代码匹配两个对象。为什么JAVA中有这种实现方式?

4

2 回答 2

4

自动装箱隐式调用Short.valueOf,它使用缓存的盒子实例来处理最多 127 的小数字。

于 2013-04-27T15:20:35.300 回答
0

Integer内部值在 -128 和 127 之间的对象与相同类型和值的实习对象进行比较,因此引用比较产生true.

理想情况下,每个这样的比较都会产生true,但在实践中为每个可能的整数保留一个对象是不可行的,这就是为什么 Java 标准不要求超出这一点。

于 2013-04-27T15:32:24.910 回答