С помощью присвоения некой строки соответствующей по типу ссылке:
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 Не стесняйтесь искать там методы, которые уже решают поставленные задачи или как-то помогают их решать.
Вам ответят команда поддержки Хекслета или другие студенты.
Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно
Наши выпускники работают в компаниях:
Зарегистрируйтесь или войдите в свой аккаунт