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

Как String хранится в памяти

В Java строки хранятся в пуле строк (String Pool) внутри heap-памяти. Начиная с Java 7, String Pool перемещён из PermGen в heap.

Ключевые моменты:

  1. Строки неизменяемы (immutable) - любая модификация создаёт новый объект
  2. При создании через литералы (String s = "hello") JVM сначала ищет строку в пуле
  3. new String() всегда создаёт новый объект в куче, даже если такая строка есть в пуле

Пример:

java
String a = "hello";  // попадает в String Pool
String b = "hello";  // берётся из String Pool
String c = new String("hello");  // новый объект в heap

System.out.println(a == b);  // true (один объект)
System.out.println(a == c);  // false (разные объекты)

Для работы с изменяемыми строками используют StringBuilder/StringBuffer.

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

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

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

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