Если видео недоступно для просмотра, попробуйте выключить блокировщик рекламы.
Для сохранения прогресса вступите в курс. Войти или зарегистрироваться.

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

  • С помощью присвоения некой строки соответствующей по типу ссылке: final String string = "Some string";

  • С помощью конструктора, который на вход принимает строку:

final String name = new String("Slava");

  • С помощью массива символов. Для начала уясним: Литералы - это объекты, которые создаются в коде на основании записи, сделанной по определенным правилам. Двойные кавычки означают, что это стринговый литерал и содержимое должно быть преобразовано в объект String. Одинарные кавычки - объект char. Зная это, можно переписать строку из предыдущего примера следующим образом: 

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

    Теперь вы знаете, что String это ссылочный тип, который внутри реализован как массив char.

  • С помощью специальных классов-билдеров. Существует два специальных класса для создания String: 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

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

Рекомендую почитать спецификации на каждый из этих классов, изучить методы и их применение. Где искать информацию по конкретным классам Вы уже должны знать к этому уроку :)

Отдельно стоит упомянуть оператор конкатенации +. Строки он просто объеденяет.

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

Из-за больших объемов строк, которые будут объеденятся с помощью обычного оператора конкатенации - может зависать программа, т.к. Garbage Collector приостанавливает работу программы для очистки различных остатков строк.

Спецификация класса String Не стесняйтесь искать там методы, которые уже решают поставленные задачи или как-то помогают их решать.

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

Мы учим программированию с нуля до стажировки и работы. Попробуйте наш бесплатный курс «Введение в программирование» или полные программы обучения по Node, PHP, Python и Java.

Хекслет

Подробнее о том, почему наше обучение работает →