1. Integer i1 = 1; превращается компилятором в: Integer i1 = Integer.valueOf(1);
2. метод valueOf для значений от -128 до 127 достает объекты из кэша
3. Integer i2 = new Integer(1); тут создается новый объект сслыка на который присваивается переменной i2
4. Integer i3 = Integer.valueOf(1); согласно пункту 1 это и есть полная запись объявления Integer i3 = 1, а так как в этом случае объект берется из кэша, то ссылка i3 будет указывать на тот же самый объект, на который указывает ссылка i1.
Подведя итог получаем, что i1 == i2 -> false, так как первый брался из кэша, а второй новосозданный в куче, а i1 == i3 -> true, так как при создании обоих, оба из кэша
Войдите чтобы поставить Нравится
Войдите чтобы прокомментировать