Быстрый тест показывает, что java использует кэш Integer и повторно использует 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