假设我们有两个Integer对象:
Integer i=100,j=200;
(j-i)
是否评估另一个值为100的整数包装器对象,或原始int
?
答案 0 :(得分:4)
快速测试显示java正在使用整数缓存,并重新使用i
:
@Test
public void test() {
Integer i=100, j=200;
System.out.println("i: " + System.identityHashCode(i));
System.out.println("j: " + System.identityHashCode(j));
Integer sub = j-i;
System.out.println("j-i: " + System.identityHashCode(sub));
}
输出:
i: 1494824825
j: 109647522
j-i: 1494824825 <-- same as i
答案 1 :(得分:4)
结果将是int
100。
i
和j
都将自动取消装箱,因此i-j
的结果将为int
。
但是如果你将结果分配如下:
Integer r = i - j;
然后结果将再次自动装箱。