Класс 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 изменяются, поэтому они могут изменять свои значения.