Ответ
String в Java является объектом, а не примитивом, потому что:
-
Объектная природа: String — это класс (
java.lang.String), хранящий последовательность char-ов. Примитивы (int, char и т.д.) не имеют методов, а у String есть методы (length(),substring()и др.). -
Иммутабельность: String неизменяем, операции создают новые объекты, а не меняют существующие. Примитивы мутабельны при присваивании.
-
Heap vs Stack: String хранится в heap (как объект), примитивы — в stack (если не часть объекта).
-
Специальная поддержка: String имеет синтаксический сахар (литералы в
""), но JVM обрабатывает его как объект.
Пример:
String s = "Hello"; // Объект в heap, не примитив
int x = 10; // Примитив в stack