Выбор ответа Junior String и пул строк спрашивают часто обновлено
Литерал и new String
Вопрос
Что выведет код?
String a = "hi";
String b = "hi";
String c = new String("hi");
System.out.println((a == b) + " " + (a == c) + " " + a.equals(c));
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: true false true. Одинаковые литералы берутся из пула строк, a == b сравнивает одну и ту же ссылку: true. new String всегда создаёт новый объект в куче: a == c даёт false. equals сравнивает содержимое: true.
Варианты ответа
true false trueправильный ответtrue true truefalse false truetrue false false
Разбор
Одинаковые литералы берутся из пула строк, a == b сравнивает одну и ту же ссылку: true. new String всегда создаёт новый объект в куче: a == c даёт false. equals сравнивает содержимое: true. Вариант с true true true предполагает, что new String тоже берёт объект из пула, это не так.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.