Создание строк
С помощью присвоения некой строки соответствующей по типу ссылке:
final String string = "Some string";
С помощью конструктора, который на вход принимает строку:
final String name = new String("Slava");
- С помощью массива символов. Для начала уясним:
Литералы - это объекты, которые создаются в коде на основании записи, сделанной по определенным правилам.
Двойные кавычки означают, что это строковый литерал и содержимое должно быть преобразовано в объект
String
. Одинарные кавычки - объектchar
. Зная это, можно переписать строку из предыдущего примера следующим образом:
final char[] nameArray = new char[] {'S', 'l', 'a', 'v', 'a'};
final String name = new String(nameArray);
Теперь вы знаете, что String
это ссылочный тип, который внутри реализован как массив char
.
- С помощью специальных классов-билдеров.
Существует два специальных класса для создания
String
:StringBuilder
иStringBuffer
. StringBuilder резервирует массив на 16 символов больше, чем нужно изначально. Следующее увеличение размера в два раза плюс один символ. Работает намного быстрее, чем через обычныйString()
.
Конструкторы класса StringBuilder
:
Создает массив через конструктор супер, передает туда длину строки плюс 16 символов и добавляет текущую строчку.
public StringBuilder(String str) { super(str.length() + 16); append(str); }
Создает пустой массив заданной длины.
public StringBuilder(int capacity) { super(capacity); }
Default - создает массив на 16 символов.
public StringBuilder() { super(16); }
Наследование и предки этих билдеров:
String builder и String buffer --> AbstractStringBuilder --> Object
Для StringBuffer
работают те же конструкторы и работает он так же, как и StringBuilder
, за одним исключением: StringBuffer
безопасен для использования в многопоточный среде, но очень медленный. В свою очередь StringBuilder
небезопасный для такого использования, но быстр.
Рекомендую почитать спецификации на каждый из этих классов, изучить методы и их применение. Где искать информацию по конкретным классам Вы уже должны знать к этому уроку :)
Отдельно стоит упомянуть оператор конкатенации +
. Строки он просто объединяет.
При конкатенации (объединении) строк часто возникают проблемы с выделением памяти, появляется ошибка OutOfMemoryError. Поэтому для частого преобразования строки путем ее наполнения новыми символами или даже строками - лучше использовать билдеры.
Из-за больших объемов строк, которые будут объединяться с помощью обычного оператора конкатенации - может зависать программа, т.к. Garbage Collector приостанавливает работу программы для очистки различных остатков строк.
Спецификация класса String Не стесняйтесь искать там методы, которые уже решают поставленные задачи или как-то помогают их решать.

Остались вопросы? Задайте их в разделе «Обсуждение»
Вам ответят команда поддержки Хекслета или другие студенты
- Статья «Как учиться и справляться с негативными мыслями»
- Статья «Ловушки обучения»
- Статья «Сложные простые задачи по программированию»
- Урок «Как эффективно учиться на Хекслете»
- Вебинар «Как самостоятельно учиться»