☕ Учебник по Java: введение в класс String
Оттачиваем навык работы со строчками: создание, форматирование, конкатенация строк и самые часто используемые методы.
Класс String в Java
Строка (String) – объект, который содержит последовательность символов (char). Если взглянуть на реализацию данного класса, то можно увидеть такую картину:
В данном коде представлена часть реализации класса String. Обращаем внимание на поле value
– в данном массиве хранятся все данные.
Также String является финальным классом, то есть не имеет подклассов и об этом говорит ключевое слово final
при объявлении класса.
Создание
Для того чтобы создать String, имеется 2 метода:
1. Строковые литералы
В данном примере для создания строки необходимые данные заключаются в двойные кавычки. Строка выводится на экран командой println()
без присваивания значения переменной.
2. Конструктор new String()
В примере выше для создания объекта используется конструктор String()
. Массив символов (nameCharsArray
) помещается как аргумент в конструктор String, который создает строку.
Длина
У строки есть метод length
, который возвращает int
– длину строки.
В примере выше написали программу, которая проходится по переменной name
и выводит все cимволы кроме a
.
Конкатенация
Конкатенация — операция объединения строк, которая возвращает новую строку, объединяя первую строчку со второй. Операция для объекта String
может быть выполнена двумя способами:
1. Метод concat
Важно понимать, что метод concat
не изменяет строку, а лишь создает новую как результат слияния текущей и переданной в качестве параметра.
2. Перегруженные операторы "+" и "+="
Данный метод для конкатенации использует математические операторы +
и +=
. Пример использования:
В данном примере есть переменная message
, к которой через конкатенацию присваивается значения “Hello”
и “Andrey!”
. Также на следующей строчке оператором +=
присваивается значение “/nGood to see you”
. В случаях, когда слияние нужно провести только один раз, рекомендовано использовать операторы.
Форматирование
Класс String предоставляет статистический метод format
, который дает возможность для форматирования строк:
Метод format
предоставляет возможность для вставки и редактирования строки. Как видно на примере, имеется переменная message
, содержащая сообщение. В сообщении находятся специальные символы:
- %s – означает строку.
- %d – означает целое число.
- %f – означает вещественное число.
Методы
Класс String предоставляет множество методов управления строкой и его символами. Подробное описание методов можно найти, перейдя по данной ссылке.
Преобразование
1. Число в строку
2. Строку в число
StringBuffer
Строки являются неизменными, поэтому частая их модификация приводит к созданию новых объектов, что, в свою очередь, расходует память. Для решения этой проблемы был создан класс java.lang.StringBuffer
, который позволяет более эффективно работать над модификацией строки. Класс является mutable, то есть изменяемым. StringBuffer
используется в многопоточных средах, так как все необходимые методы являются синхронизированными.
Создание
Существует четыре способа создания объекта класса StringBuffer
. Каждый объект имеет свою вместимость (capacity), отвечающую за длину внутреннего буфера. Если длина строки, хранящейся во внутреннем буфере, не превышает размер этого буфера (capacity), то нет необходимости выделять новый массив буфера. Если же буфер переполняется – он автоматически становится больше.
Модификация
В большинстве случаев StringBuffer используется для многократного выполнения операций добавления (append
), вставки (insert
) и удаления (delete
) подстрок. Например:
StringBuilder
StringBuilder
– класс, предоставляющий изменяемую последовательность символов. Класс был введен в Java 5 и имеет полностью идентичный API с StringBuffer
. Единственное отличие – StringBuilder
не синхронизирован. Это означает, что его нежелательно использовать в многопоточных средах. Следовательно, для работы с многопоточностью идеально подходит StringBuffer
. Пример использования:
Сравнение строк
Для сравнения строк используются методы:
equals()
, с учетом регистраequalsIgnoreCase()
, без учета регистра
Оба метода в качестве параметра принимают строку, с которой надо сравнить:
Разбиение строки на массив строк
Для деления строки у класса java.lang.String
существует метод split
, который в аргументе принимает символ — разделитель строки.
Определение позиции элемента в строке
Метод indexOf()
ищет в строке заданный символ или строку и возвращает индекс (т. е. порядковый номер).
Метод:
- возвращает индекс, под которым символ или строка первый раз появляется в строке;
- возвращает (
-1
), если символ или строка не найдены.
Метод также может искать символ или строку, начиная с указанного индекса.
Извлечение подстроки из строки
Метод substring()
в Java возвращает новую строку, которая является подстрокой данной строки. Подстрока начинается с символа, заданного индексом, и продолжается до конца данной строки или до endIndex-1
, если введен второй аргумент.
Перевод строки в верхний/нижний регистр
Преобразовать текстовые строки Java в верхний или нижний регистр довольно просто: для этого используйте встроенные методы Java – toUpperCase
и toLowerCase
. Подробнее с примером.
Перевод коллекции строк к строковому представлению
Чтобы соединить строки в Java, используется метод String.join()
. Разделитель, заданный в качестве первого параметра в методе, копируется для каждого элемента. Допустим, нужно объединить строки «Demo» и «Text». Для этого используется метод join()
, как показано ниже: