Следующий код казался мне очень запутанным, так как он предоставил два разных выхода. Код был протестирован на jdk 1.7.
public class NotEq {
public static void main(String[] args) {
    ver1();
    System.out.println();
    ver2();
}
public static void ver1() {
    Integer a = 128;
    Integer b = 128;
    if (a == b) {
        System.out.println("Equal Object");
    }
    if (a != b) {
        System.out.println("Different objects");
    }
    if (a.equals(b)) {
        System.out.println("Meaningfully equal.");
    }
}
public static void ver2() {
    Integer i1 = 127;
    Integer i2 = 127;
    if (i1 == i2) {
        System.out.println("Equal Object");
    }
    if (i1 != i2){
        System.out.println("Different objects");
    }
    if (i1.equals(i2)){
        System.out.println("Meaningfully equal");
    }
}
}
Вывод:
[вывод ver1]
Различные объекты
Смысл равен.[вывод ver2]
Равный объект
Значительно равный
Почему проверка == и!= дает разные результаты для ver1() и ver2() для того же числа, что намного меньше Integer.MAX_VALUE? Можно ли сделать вывод, что == проверка чисел более 127 (для классов-оболочек, таких как Integer, как показано в коде) является пустой тратой времени?
