Урок 13

StringBuilder и StringBuffer


1. Отличие между String, StringBuilder, StringBuffer

  1. Классы StringBuffer и StringBuilder в Java используются, когда возникает необходимость сделать много изменений в строке символов.
  2. В отличие от String, объекты типа StringBuffer и StringBuilder могут быть изменены снова и снова.
  3. В Java StringBuilder был введен начиная с Java 5.
  4. Основное различие между StringBuffer и StringBuilder является то, что методы StringBuilder не являются безопасными для потоков (несинхронизированные).
  5. Рекомендуется использовать StringBuilder всякий раз, когда это возможно, потому что он быстрее, чем StringBuffer в Java.
  6. Однако, если необходима безопасность потоков, наилучшим вариантом являются объекты StringBuffer.

2. Конструкторы StringBuilder

  • StringBuilder() - объект StringBuilder можно создать без параметров, при этом в нем будет зарезервировано место для размещения 16 символов.
  • StringBuilder(int size) - вы также можете передать конструктору целое число, для того чтобы явно задать требуемый размер буфера.
  • StringBuilder(String str) - вы можете передать конструктору строку, при этом она будет скопирована в объект и дополнительно к этому в нем будет зарезервировано место еще для 16 символов.
  • StringBuilder(CharSequence chars)

Пример 1. Создания объекта StringBuilder

public class StringBuilderDemo1 {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder("Hello");

        System.out.println("string = " + stringBuilder);
        System.out.println("length = " + stringBuilder.length());
        System.out.println("capacity = " + stringBuilder.capacity());
    }
}

3. Методы класса StringBuilder

3.1. Методы charAt(), setCharAt()

Пример 1. Использование методов charAt(), setCharAt()

public class SetCharAtDemo {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("Hello");
        System.out.println("string before = " + sb);
        System.out.println("charAt(1) before = " + sb.charAt(1));
        sb.setCharAt(1, 'i');
        sb.setLength(2);
        System.out.println("string after = " + sb);
        System.out.println("charAt(1) after = " + sb.charAt(1));
    }
}

3.2. Метод append()

Пример 2. Использование методa append()

public class AppendDemo {
    public static void main(String[] args) {
        String s;
        int a = 42;
        StringBuilder sb = new StringBuilder(40);

        s = sb.append("a = ").append(a).append("!").toString();
        System.out.println(s);
    }
}

3.3. Метод insert()

Пример 3. Использование методa insert()

public class InsertDemo {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("I Java!");

        sb.insert(2, "like ");
        System.out.println(sb);
    }
}

3.4. Метод reverse()

Пример 4. Использование методa reverse()

public class ReverseDemo {
    public static void main(String[] args) {
        StringBuilder s = new StringBuilder("abcdef");

        System.out.println(s);
        s.reverse();
        System.out.println(s);
    }
}

3.5. Методы delete() и deleteCharAt()

Пример 5. Использование методов delete() и deleteCharAt()

public class DeleteDemo {
    public static void main(String[] args) {
        StringBuilder sb = new StringBuilder("This is a test.");

        sb.delete(4, 7);
        System.out.println("After delete: " + sb);

        sb.deleteCharAt(0);
        System.out.println("After deleteCharAt: " + sb);
    }
}

3.6. Методы replace()

Пример 6. Использование методов replace()

public class ReplaceDemo {
    public static void main(String[] args) {
        StringBuilder stringBuilder = new StringBuilder("Этo простой тест.");
        stringBuilder.replace(4, 11, "был");
        System.out.println("После замены: " + stringBuilder);
    }
}


0 comments
Leave your comment: