Почему String не относится к примитивным типам в Java

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

Ответ

String в Java является объектом, а не примитивом, потому что:

  1. Объектная природа: String — это класс (java.lang.String), хранящий последовательность char-ов. Примитивы (int, char и т.д.) не имеют методов, а у String есть методы (length(), substring() и др.).

  2. Иммутабельность: String неизменяем, операции создают новые объекты, а не меняют существующие. Примитивы мутабельны при присваивании.

  3. Heap vs Stack: String хранится в heap (как объект), примитивы — в stack (если не часть объекта).

  4. Специальная поддержка: String имеет синтаксический сахар (литералы в ""), но JVM обрабатывает его как объект.

Пример:

String s = "Hello"; // Объект в heap, не примитив
int x = 10;         // Примитив в stack