Что выведет следующий код? (Версия java 1.5)

public static void main(String[] args) {
    Integer a = 12;
    Integer b = 12;
    Integer c = 128;
    Integer d = 128;
    System.out.println(a == b);
    System.out.println(c <= d);
    System.out.println(c >= d);
    System.out.println(c == d);
}
Explanation
С версии 5.0 при использовании метода valueOf(...) при попадании аргумента в диапазон Integer: -128..127 всегда будет возвращаться один и тот же объект, соответствующий числу, из заранее созданного массива экземпляров. Если аргумент не попадает в диапазон, метод valueOf() создает новый обьект. Т.к. оператор == сравнивает обьекты по ссылке, то a == b - true, а c == d - false, в то время как >= автоматически распаковывает объекты Integer обратно в int неявным вызовом intValue(). Таким образом c >= d и c <= d - true.

Следи за CodeGalaxy

Мобильное приложение Beta

Get it on Google Play
Обратная Связь
Продолжайте изучать
тесты по Java
Cosmo
Зарегистрируйся сейчас
или Подпишись на будущие тесты