Класс Java StringBuilder
Содержание
Java StringBuilder идентичен StringBuffer, за исключением одного важного различия, которое не синхронизировано, это означает, что он не является потокобезопасным. Основное отличие между StringBuffer и StringBuilder - StringBuffer синхронизируется, но StringBuilder - нет. Вы должны предпочесть StringBuilder во всех случаях, когда у вас есть только один поток, обращающийся к вашему объекту.
Важными методами в классе StringBuilder являются append(), insert(), replace(), delete(), reverse() и capacity(). Следующая Java-программа иллюстрирует важные методы в классе StringBuilder.
Пример
class TestClass{
public static void main (String[] args){
// добавление значений в StringBuilder
StringBuilder sb = new StringBuilder("The ");
sb.append( "Java " );
sb.append( "Tutorial " );
System.out.println(sb);
// вывод: учебник по Java
// вставляем указанную строку этой строкой в указанной позиции
sb.insert(8," StringBuilder ");
System.out.println(sb);
// output: Учебник Java StringBuilder
// заменяем строку из указанных startIndex и endIndex
sb.replace(4,4,"Good");
System.out.println(sb);
// вывод: учебник по стилю GoodJava StringBuilder
// удалить строку из указанных startIndex и endIndex
sb.delete(0,4);
System.out.println(sb);
// вывод: GoodJava StringBuilder Tutorial
// отменить строку
sb.reverse();
System.out.println(sb);
// вывод: lairotuT redliuBgnirtS avaJdooG
// вернуть текущую емкость
StringBuilder nsb = new StringBuilder();
System.out.println(nsb.capacity());
// output: 16, емкость по умолчанию 16
nsb.append("The Java Tutorial ");
System.out.println(nsb.capacity());
// вывод: 34, (oldcapacity * 2) +2, (16 * 2) +2
}
}
Выход
The Java Tutorial The Java StringBuilder Tutorial The GoodJava StringBuilder Tutorial GoodJava StringBuilder Tutorial lairotuT redliuBgnirtS avaJdooG 16 34 34 34
Метод append() StringBuilder
Основными операциями в StringBuilder являются метод append, который перегружен, чтобы принимать данные любого типа. Добавления String становятся все более дорогими, поскольку строки становятся длиннее и требуется больше памяти. Например:
class TestClass{
public static void main (String[] args) {
String str = "";
for (int i = 0; i < 100; i++) {
str += ", " + i;
}
System.out.println(str);
}
}
В приведенном выше случае вы должны использовать StringBuilder вместо String, потому что он намного быстрее и потребляет меньше памяти.
class TestClass{
public static void main (String[] args) {
StringBuilder sb = new StringBuilder();
for (int i = 0; i < 100; i++) {
sb.append(i + ", " );
}
System.out.println(sb);
}
}
Если у вас есть один оператор,
String s = "a, " + "b, " + "c, " + "d, " ...;
то вы можете использовать Strings, потому что компилятор будет автоматически использовать StringBuilder.
Разность Mutability String и StringBuilder
Строка неизменна, если вы пытаетесь изменить их значения, создается другой объект, тогда как StringBuilder изменяются, поэтому они могут изменять свои значения.
