— Как считаешь, Амиго, какой самый популярный класс в Java после int?
— Ты мне уже проспойлерила в названии лекции, Элли. Это String
!
— Спойлер спойлером, а так и есть. String
используется абсолютно везде. У него есть куча полезных методов, которые лучше знать, чем не знать.
— Класс String
— единственный класс, кроме примитивных типов, литералы которого можно использовать в switch
; компилятор по-особому обрабатывает сложение строк и объектов; объекты String
по-особому хранятся в памяти. В общем, класс String
— это очень специфический класс.
— Также у класса String
есть куча классов-сателлитов, цель которых — еще больше упростить работу со строками в Java. Когда ты всё это изучишь, тебе действительно станет значительно проще делать многие вещи.
— Жду не дождусь.
— Ну а начнем мы с самого сердца этой экосистемы — с устройства класса String
. Устроен класс String
на самом деле очень просто: внутри него находится массив символов (char
), который хранит все символы строки. Вот так, например, хранится слово «Привет»:

Важно.
На самом деле все немного не так. Т.к. класс String
очень важен, в нем используется очень много оптимизаций, и данные хранятся внутри не в виде массива символов, а просто в виде массива байтов.
Методы класса String
У класса String
очень много методов: одних только конструкторов у него 18 штук! Поэтому ниже я приведу только самые часто используемые:
Методы | Описание |
---|---|
|
Возвращает количество символов в строке |
|
Проверяет, что строка == пустая строка |
|
Проверяет, что в строке — только whitespace-символы: пробел, tab, enter и т.п. |
|
Возвращает символ, который стоит на index-позиции в строке. |
|
Возвращает массив символов (копию), из которых состоит строка |
|
Преобразует строку в набор байт и возвращает массив байт. |
|
Разделяет строку на несколько подстрок. |
|
Склеивает вместе несколько подстрок |
|
Помещает строку в пул StringPool. |
— Выглядит очень годно!
— Давай напишем программу, которая преобразовывает путь к файлу из Unix Style в Windows Style. Unix в качестве разделителя директорий использует символ /
, Windows — символ \
.
Решение 1. Использование массива char
’ов
Код | Примечания |
---|---|
|
Создание объекта Scanner Чтение строки с консоли Преобразование строки в массив символов Цикл по символам Если символ равен / ,заменить его на \ . Не забываем про экранирование.Создаем новую строку на основе массива символов. Выводим строку на экран. |
Решение 2. Использование методов split()
и join()
:
Код | Примечания |
---|---|
|
Создание объекта Scanner Чтение строки с консоли Преобразование строки в массив строк. В качестве разделителя используется символ / (дополнительные два слеша – это следствие двойного экранирования).Объедением все строки из массива строк, в качестве разделителя используется символ \ (мы видим его экранированным).Выводим строку на экран. |
Решение 3. Использование метода replace(char oldChar, char newChar)
:
Код | Примечания |
---|---|
|
Создание объекта Scanner Чтение строки с консоли Просто заменяем один символ на второй (второй — экранирован) Выводим строку на экран. |
— Мне больше всего понравилось третье решение. Но потренируюсь на всех трёх.
— Молодец, Амиго. Вижу, что тебе уже не терпится обкатать новые знания на практике. Урок окончен.
ПЕРЕЙДИТЕ В ПОЛНУЮ ВЕРСИЮ