Какие бывают строковые классы?

Для работы со строками, в Java, кроме String, существуют ещё два класса: StringBuffer и StringBuilder. В отличие от String они реализуют паттерн строитель (Builder), и способны изменять строки без создания нового объекта.

Эти два класса очень похожи друг на друга, и используют одинаковые методы и конструкторы. Но между ними есть различие. Класс StringBuffer появился первым, и чтобы он работал правильно в любых условиях все его методы сделали синхронными, а значит потокобезопасными. Класс StringBuilder появился позже и его методы однопоточные. Исходя из этого, в обычных условиях, рекомендуется использовать Класс StringBuilder, так как он работает быстрее. Но, если для работы приложения важна потокобезопасность, лучше применять StringBuffer.

Классы StringBuffer и StringBuilder невозможно создать литералом, для этого нужно использовать конструктор. Также экземпляры этих классов не допускается конкатенировать с помощью оператора +, для этого нужно вызывать методы insert или append.

При конкатенации констант компилятор создаёт неизменяемую (интернированную) строку. В то же время, для неконстантных выражений, неявно вызываются методы класса StringBuilder.

return "Hello" + "World"; // скомпилируется в 
return "HelloWorld";
return "Hello" + x; // скомпилируется в
return new StringBuilder().append("Hello").append(x).toString();
Поделиться уроком

Ответить

Ваш адрес email не будет опубликован. Обязательные поля помечены *