Встречается на собеседованиях • сегодня

В чем разница между написанием строк в "" и вызовом new String

Строковые литералы в двойных кавычках ("") автоматически интернируются JVM и помещаются в пул строк. При повторном использовании того же литерала возвращается ссылка на существующий объект из пула.

new String создает новый объект в куче, даже если такая строка уже есть в пуле. Это менее эффективно по памяти.

Пример:

java
String s1 = "hello";  // из пула строк
String s2 = "hello";  // та же ссылка из пула
String s3 = new String("hello");  // новый объект в куче

System.out.println(s1 == s2); // true (одна ссылка)
System.out.println(s1 == s3); // false (разные объекты)

Рекомендуется использовать литералы, если не требуется явно создавать новый объект.

Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

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

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

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