Класс String в Java: примеры

Строка в Java – это элемент, состоящий из последовательности символов. Инструмент получил широкое распространение, относится к числу объектов. Класс String в языке программирования Java и используется для работы с указанными компонентами. Есть особенности и подсказки, благодаря которым работа упрощается.

На фото изображено окно программы IntelliJ IDEA.

Общее описание класса String

Общедоступный финальный класс java.lang.String представлен как раз для того, чтобы создавать строки, манипулировать ими. Наличие подклассов в этом случае недопустимо. Любые изменения тоже не предполагаются. Иногда кажется, что методы имеют право вносить корректировки, но подобные мысли относятся к заблуждениям.

Методы способствуют только созданию и возврату новых строк, в которых хранят результаты по операциям.

Благодаря неизменности строк появляется целый ряд возможностей:

  1. Строки как ключи в HashMap. Рекомендуется делать так, чтобы элемент нельзя было изменить.
  2. Поддержка StringPool – обозначение коллекции ссылок на объекты String. Помогает оптимизировать память.
  3. Совмещение с многопоточными средами.

Правила создания

Объект класса String создаётся несколькими способами:

  • С участием строковых литералов.

String habr = “habrahabr”.

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

System.out.print(«habrahabr»); // создали объект и вывели его значение

  • Конструкторы.

String habr = «habrahabr»;

char[] habrAsArrayOfChars = {‘h’, ‘a’, ‘b’, ‘r’, ‘a’, ‘h’, ‘a’, ‘b’, ‘r’};

byte[] habrAsArrayOfBytes = {104, 97, 98, 114, 97, 104, 97, 98, 114};

String first = new String();

String second = new String(habr);

Но от конструкторов лучше отказаться, если явно можно обойтись без копии той или иной строки. Ведь сам элемент остаётся неизменным. Производительность уменьшается, если постоянно применять данный метод при построении строк. Лучше отдать предпочтение аналогичным инициализациям, прибегнуть к помощи строковых литералов.

String third = new String(habrAsArrayOfChars); // «habrahabr»

String fourth = new String(habrAsArrayOfChars, 0, 4); // «habr»

Объект строк в Java может формироваться на основе массива с символами. Весь массив копируется, для чего используют методы статического типа с обозначением copyOfRange и copyOf. Соответственно, это копирование всего массива целиком, либо только определённой его части.

Последний вариант актуален при указании на 2 и 3-ий параметры в конструкторе. Нужный класс в этом случае – Arrays. В свою очередь, сами параметры предполагают опору на System.arraycopy – это платформо-зависимая реализация.

При создании объекта строк допускается применение массива байтов. Параметр класса Charset, отвечающий за кодировку, может быть переделан. Указанная кодировка способствует организации декодирования массива. От кодировки может зависеть параметр под названием Charset.defaultCharset().

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

Наконец, для создания строки можно воспользоваться конструкторами StringBuffer, StringBuilder, со значением (getValue()) и длиной (length()).

На самом деле, число конструкторов для строк доходит до 15, выше приведены только самые распространённые типы.

Длина

В работе со строками Java это важный элемент. Для распознавания этой характеристики достаточно обратиться к объекту String обычным методом доступа. (accessor method) length (). Тогда количество символов в строке возвращается, проще определяется длина строки Java.

Описание конкатенации

Это название операции по объединении строк. Возвращается новая строка, которая стала результатом объединения второй строки и окончания первой. Для объекта String применяют два метода, выполняя операцию:

  1. Метод concat. Здесь строку не изменяют. Только создают новую, ставшую результатом слияния текущей и той, что передана в качестве параметра. Новый объект String возвращается, поэтому допустимо создание действительно длинных цепочек.
  2. Операторы «+» и «+=» с перегрузкой. Язык программирования в Java не позволяет перегружать операторы для выполнения одного из указанных действий. Но в операторе «+» метод concat тоже не проходит, механизм будет отличаться от других решений. Как и применение string и trim Java методов.

При одноразовом слиянии выбирают только метод Concat. В остальных случаях выбирают между оператором «+» и StringBuilder/StringBuffer. При этом с оператором «+» невозможно получить NullPointerException, если хотя бы один операнд равняется null.

Другое дело – метод concat, substring Java.

Форматирование

В классе String можно не отказываться от создания строк с поддержкой форматирования. Для этого и обращаются к статистическому методу format. Он помогает и с параметром length Java.

О распространённых методах

Манипулирование строкой и её символами упрощается благодаря большому количеству методов. В Oracle есть множество статей, посвящённых каждому из имеющихся инструментов. Разве что отдельного упоминания заслуживает join – один из статистических методов, который появился недавно. Теперь можно использовать разделители для удобного объединения нескольких строк в одну.

За эту опцию отвечает добавленный класс java.lang.StringJoiner.

StringBuffer

К созданию новых объектов приводят частые модификации строк, которые сами по себе остаются неизменными элементами. Из-за этого с каждым разом расходуется больше памяти. Чтобы решить проблему, надо воспользоваться недавно созданным классом java.lang.StringBuffer. Инструмент нужен для повышения эффективности работы с модификациями строк.

Это изменяемый класс с обозначением marble. Если содержимое строки требует изменений, нужно пользоваться имеющимся функционалом. Все необходимые методы – синхронизированы, что даёт применять StringBuffer для многострочных сред.

StringBuilder

StringBuilder – обозначение класса, который, по сути, становится изменяемой последовательностью символов. Впервые он появился в 5-ой версии Java, API практически идентичен со StringBuffer. Отсутствие синхронизации становится единственным отличием между этими двумя классами. Поэтому нежелательно применять инструмент, работая с многопоточными средами.

О сравнении строк

Идентичность строк легко проверить параметром Boolean equals (Object and Object). Только при наличии одинаковой последовательности символов с одной и той же величиной возвращается значение True.

Ещё один важный параметр для решения вопроса – int compareTo (String anotherString). Может содержать целые отрицательные или положительные числа в зависимости от последовательных строк.

Выводы

При знакомстве с основными элементами дальнейшая работа со строками не такая уж сложная. Важно несколько раз повторять упражнения и основные детали кода, чтобы быстрее запомнить информацию. Не помешает применять полученные знания на практике, в том числе – при реализации собственных проектов. Тогда и основные параметры запоминаются быстрее. Можно отдельно выписывать их, чтобы быстрее находить в соответствующие моменты.

Ссылка на основную публикацию