两个 Integer 对象相减会得到 Integer 还是原始 int?

aps*_*aps 4 java wrapper

假设我们有两个 Integer 对象:

Integer i=100,j=200;
Run Code Online (Sandbox Code Playgroud)

计算结果是否(j-i)为另一个值为 100 的 Integer Wrapper 对象或一个原语int

Sea*_*son 5

快速测试表明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));
}
Run Code Online (Sandbox Code Playgroud)

输出:

i: 1494824825
j: 109647522
j-i: 1494824825 <-- same as i
Run Code Online (Sandbox Code Playgroud)