Урок «Модуль 6. Урок 1. Составные строки в Java.» Урок «Модуль 6. Урок 1. Составные строки в Java.» Модуль 6....
Чтобы смотреть видео нужно иметь активную платную подписку и вступить в курс. Войти или зарегистрироваться.

Создание строк

    final String name = "Slava"

Литералы - это объекты, которые создаются в коде на основании записи, сделанной по определенным правилам.

Двойные кавычки означают, что это стринговый литерал и содержимое должно быть преобразовано в объект строка. Одинарные кавычки - объект char.

Зная это, можно переписать строку следующим образом: 

    final char[] nameArray = new char[] {'', '', '', '', ''};
    final String name = String(nameArray);

В стеке - ссылка, в хипе - объект с массивом.

Оператор конкатенации строк --> + 

При конкатенации (объединении) строк часто возникают проблемы с выделением памяти, появляется ошибка OutOfMemoryError.

Garbage Collector --> приостанавливает работу программы для очистки.

Существует два специальных класса ---> StringBuilder и StringBuffer

StringBuilder резервирует массив на 16 символов больше, чем нужно изначально. Следующее увеличение размера в два раза плюс один символ. Работает намного быстрее, чем через обычный String.

Конструкторы класса StringBuilder

1) Создает массив через конструктор супер, передает туда длину строки плюс 16 символов и добавляет текущую строчку.

    public StringBuilder(String str) {
        super(str.length() + 16);
        append(str);
    }

2) Создает пустой массив заданной длины.

    public StringBuilder(int capacity) {
        super(capacity);
    }

3) Default - создает массив на 16 символов.

    public StringBuilder() {
        super(16);
    }

String builder и String buffer --> AbstractStringBuilder --> Object

Для SдringBuffer работают те же конструкторы и работает он так же, как и StringBuilder, за одним исключением: StringBuffer безопасен для использования в многопоточный среде, но очень медленный. В свою очередь StringBuilder небезопасный для такого использования.

Дополнительно о методах объекта String:

http://docs.oracle.com/javase/7/docs/api/java/lang/String.html

Ищем интересующие методы сопоставляя их по аргументам.

Группы для общения: