JavaRush/Курсы/Java Syntax Pro/Тип String – строки и текст

Тип String – строки и текст

Открыта

1. Тип String

Тип String — один из самых используемых типов в Java. Возможно, вообще самый используемый. Это просто великолепный тип, ведь в таких переменных можно хранить текст. А еще, в отличие от типов int и double, у объектов типа String можно вызывать методы, и с помощью этих методов делать полезные и интересные вещи.

Кроме того, все объекты в Java (вообще все) могут быть преобразованы в тип String. Ну или, если сказать более корректно, все объекты в Java возвращают свое текстовое (строковое) представление. А название типа String пишется с большой буквы, т.к. этот тип является полноценным классом.

Мы будем еще не раз возвращаться к этому типу (очень уж он полезный и интересный), но сегодня познакомимся поверхностно.


2. Создание переменных типа String

Тип String создан для хранения строк (текста). Чтобы создать в коде переменную, которая будет способна хранить текст, нужно воспользоваться командой:

String имя;
Создание переменной типа String

Где имя — это имя переменной.

Примеры:

Команда Описание
String name;
Создается строковая переменная name
String message;
Создается строковая переменная message
String text;
Создается строковая переменная text

Так же, как с типами int и double, можно использовать краткую запись для создания нескольких переменных типа String:

String имя1, имя2, имя3;
Краткая запись создания нескольких переменных типа String

3. Присваивание значений переменным типа String

Чтобы занести в переменную типа String значение, нужно воспользоваться командой

имя = "значение";
Присваивание значения переменной типа String

А вот и первое отличие типа от уже изученных. Все значения типа String представляют собой строки текста и должны быть заключены в двойные кавычки.

Примеры:

Команда Примечание
String name = "Аня";
Переменная name содержит текст Аня
String city = "New York";
Переменная city содержит текст New York
String message = "Hello!";
Переменная message содержит текст Hello!

4. Инициализация переменных типа String

Как и в случае с типами int и double, переменные типа String можно инициализировать сразу при создании. Это, кстати, можно делать вообще со всеми типами в Java. Так что больше мы об этом говорить не будем.

String имя1 = "значение1", имя2 = "значение2", имя3 = "значение3";
Сокращенная форма создания и инициализации переменных
String name = "Аня", city = "New York", message = "Hello!";
Пример команды создания и инициализации переменных
Обратите внимание:

Java-компилятор будет ругаться, если вы объявите переменную, не присвоив ей никакого значения и попробуете ее использовать.

Такой код работать не будет:

Команда Примечание
String name;
System.out.println(name);
Переменная name не инициализирована. Программа не скомпилируется.
int a;
a++;
Переменная a не инициализирована. Программа не скомпилируется.
double x;
double y = x;
Переменная x не инициализирована. Программа не скомпилируется.


Комментарии (377)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Euraks Backend Developer
16 сентября, 07:15
String word = "word"; — строковый литерал. JVM кладёт его в String Pool (пул строк). Если такая строка там уже есть, переиспользуется существующий объект, новый не создаётся. String word = new String("word"); — new всегда создаёт новый объект в куче, даже если такая же строка уже есть в пуле. При этом литерал "word" внутри скобок тоже попадает в пул (если его там ещё не было). То есть в худшем случае создаётся два объекта. Отсюда классический пример с ==:
String a = "word";
String b = "word";
String c = new String("word");

a == b;          // true  — одна и та же ссылка из пула
a == c;          // false — c это отдельный объект в куче
a.equals(c);     // true  — содержимое одинаковое
a == c.intern(); // true  — intern() возвращает ссылку из пула
Практические выводы: Строки сравнивают через equals(), а не ==. == сравнивает ссылки, и с литералами «случайно работает», что маскирует баги. new String("...") почти никогда не нужен: это лишний объект без пользы (IDE и Sonar обычно на это ругаются). Литералы, сложенные на этапе компиляции, тоже идут в пул: "wo" + "rd" == "word" даёт true. А конкатенация с переменной в рантайме создаёт новый объект, и == уже даст false. Начиная с Java 7 пул находится в обычной куче (раньше был в PermGen), так что его содержимое собирается GC.
Perpetuum Mobile
Уровень 2
2 сентября, 07:53
А что дальше не будет возможности заработать материю без подписки?
TheNamelessтестировщик Магического Б в Башня Ксардаса
26 октября, 16:30
Можешь фармить по +1 на тесте
23 августа, 14:04
Мы справимся, всем удачи! Дмитрий 31 год
Дмитрий QA Automation Engineer
2 января, 11:03
Не понимаю негодования про цену на курс. Вы получаете знания и весьма неплохие в структурированном виде. Понятное дело, идеального курса не бывает, но многие советуют именно этот. Поэтому оплатил не раздумывая. Всем успехов в таком прекрасном начинании!
RomaRap Java Developer
23 апреля, 21:04
Большинству людей будет достаточно стандартной базы джава, а дальше можно уже самому спокойно обучиться чему хочешь. условные 28 евро это копейки просто за курс
C0N5P1RACY QA Automation Engineer
24 ноября 2025, 09:00
🙏🙏🙏Накидайте лайков для ачивки, пожалуйста 🙏🙏🙏
Роман Зарубин
Уровень 13
19 ноября 2025, 13:58
Делаю
Нэй
Уровень 1
8 сентября 2025, 11:27
/* Комментарий удален */
Maksim Volkov
Уровень 6
10 октября 2025, 13:31
Vadim
Уровень 5
24 июля 2025, 10:22
за седьмую колонну лайк
Яна Янчик
Уровень 1
12 июля 2025, 22:11
на самом деле курс дорогой, а я думала, что базовый набор доступен всем( эххх, искала тут в основном задачки, последовательные чтоб, но всем интересующимся советую бесплатно изучить теорию на метаните, а задачки смотреть на leetcode или codewars , не уверена будет ли там ооп, но очень хотелось бы найти что-нибудь
Ronin show
Уровень 3
18 августа 2025, 18:49
я пока только прохожу и не совсем понял, дальше уже будет платным ? только заметил, что задачки уже не доступны!
Яна Янчик
Уровень 1
24 августа 2025, 12:15
да, вы правильно заметили
Anonymous #3585174
Уровень 33
23 мая 2025, 18:47
good