Ответ
Нет, 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 не впендюрить!
Вот и вся магия, блядь. Не путай теплое с мягким, а то потом в коде такие косяки вылезут — волосы дыбом встанут!