Встречается на 2% собеседований по Java

Что Java вернет, если создать строку, которая уже есть в String Pool

При создании строки через литерал (String s = "text") Java сначала проверяет String Pool. Если такая строка уже существует, возвращается ссылка на существующий объект из пула. Если нет — строка добавляется в пул, и возвращается новая ссылка.

Пример:

java
String s1 = "hello";
String s2 = "hello";
System.out.println(s1 == s2); // true (ссылки одинаковые)

Для new String("text") создается новый объект в куче, даже если строка есть в пуле:

java
String s3 = new String("hello");
System.out.println(s1 == s3); // false (разные ссылки)

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы