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

Ответ

Нет, String не является примитивным типом. Это ссылочный тип (reference type), полноценный объект класса java.lang.String.

Ключевые отличия от примитивов (int, char, boolean и др.): Признак Примитивные типы String (ссылочный тип)
Хранение Значение в стеке (для локальных переменных) Ссылка в стеке, объект в куче
Значение по умолчанию 0, false и т.д. null
Наличие методов Нет Да (length(), substring(), equals())
Сравнение Оператор == Метод .equals() для сравнения содержимого
Возможность быть null Нет Да

Пример, иллюстрирующий разницу:

int primitiveInt = 100;          // Примитив, хранит значение 100
String referenceString = "Hi";   // Ссылка, указывает на объект String "Hi"
String nullString = null;        // Ссылка может не указывать на объект
// primitiveInt = null; // ОШИБКА КОМПИЛЯЦИИ: примитив не может быть null

Ответ 18+ 🔞

Да ты посмотри, какой народ безмозглый, блядь! Опять путают примитивы со строками, в рот меня чих-пых!

Нет, ёпта, String — это не примитив, а полноценный ссылочный тип, объект, блядь! Класс java.lang.String, вся его родня там.

Смотри, в чём разница, а то голова квадратная:

Признак Примитивы (int, char и прочая хуйня) String (ссылочный тип)
Где лежит Значение прямо в стеке (если локальная переменная) Ссылка в стеке, а сам объект — в куче, блядь!
Значение по дефолту Ноль, false — скукота null, то есть нихуя не указывает
Методы есть? Нет, тупой как пробка Да, целая куча: length(), substring() — делай что хочешь!
Как сравнивать Оператором ==, и всё == сравнивает ссылки, а чтобы по содержимому — надо .equals() вызывать, ёба!
Может быть null? Ни хуя подобного, ошибка компиляции Да запросто, хоть все переменные в null преврати

Вот тебе живой пример, чтобы в голове уложилось:

int primitiveInt = 100;          // Примитив, тупо число 100 в переменной
String referenceString = "Hi";   // Ссылка, которая тычет в объект "Hi" в куче
String nullString = null;        // А это ссылка, которая нихуя не тычет — законно!
// primitiveInt = null; // А вот это — пиздец, компилятор заорёт! Примитиву null не впендюрить!

Вот и вся магия, блядь. Не путай теплое с мягким, а то потом в коде такие косяки вылезут — волосы дыбом встанут!