Выбор ответа Junior Основы: типы, обёртки, static спрашивают часто обновлено
Integer == для 127 и 128
Вопрос
Что выведет код?
Integer a = 127, b = 127;
Integer c = 128, d = 128;
System.out.print((a == b) + " " + (c == d));
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: true false. Автоупаковка вызывает Integer.valueOf, который возвращает объекты из кеша для значений от -128 до 127.
Варианты ответа
true falseправильный ответtrue truefalse falsefalse true
Разбор
Автоупаковка вызывает Integer.valueOf, который возвращает объекты из кеша для значений от -128 до 127. Обе переменные со значением 127 указывают на один объект, == даёт true. Для 128 создаются два разных объекта, ссылки разные: false. true true было бы, если бы == сравнивал значения, но для объектов он сравнивает ссылки. Значения сравнивают через equals.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.
Предыдущий вопрос
Переопределённый метод в конструкторе родителя
Следующий вопрос
Что выведет: кеш Integer и equals
Термины по теме
Ещё по теме «Основы: типы, обёртки, static»
- char плюс int
- Изменили константу в библиотеке
- Деньги в double
- Ключ Long и get(int)
- final ссылка на список
- Автоупаковка
- Порядок инициализации
- Примитивы Java