Является ли строка примитивным типом в Java?

«Является ли строка примитивным типом в Java?» — вопрос из категории Java Core, который задают на 10% собеседований Java Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Нет. В Java String — это не примитив, а полноценный объект (ссылочный тип).

Ключевые отличия от примитивов:

  • Хранение: Примитивы (например, int, char) хранятся в стеке. Объекты String хранятся в куче, а переменная содержит ссылку на этот объект.
  • Функциональность: String имеет методы (length(), substring(), equals()).
  • Пул строк: Для оптимизации Java использует пул строк (String Pool), что невозможно для примитивов.
  • Значение по умолчанию: Для локальных переменных примитивы не инициализируются, а ссылка на String имеет значение null.

Пример:

int primitive = 10; // Примитив в стеке
String object = "Hello"; // Ссылка в стеке, объект "Hello" в куче/пуле строк