Integer integer1 = 127;Integer integer2 = 127;System.out.println(integer1 == integer2); // outputs "true"
Integer integer1 = -10;Integer integer2 = -10;System.out.println(integer1 == integer2); // outputs "true"
Integer integer1 = 128;Integer integer2 = 128;System.out.println(integer1 == integer2); // outputs "false"
The reason is:
Java Language Specifications 5.1.7
If the value p being boxed is true, false, a byte, or a char in the range \u0000 to \u007f, or an int or short number between -128 and 127 (inclusive), then let r1 and r2 be the results of any two boxing conversions of p. It is always the case that r1 == r2.