Зарегистрируйтесь для доступа к 15+ бесплатным курсам по программированию с тренажером

Модуль 6. Урок 1. Составные строки в Java. Введение в Java

Видео может быть заблокировано из-за расширений браузера. В статье вы найдете решение этой проблемы.

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

  • С помощью присвоения некой строки соответствующей по типу ссылке: 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 Не стесняйтесь искать там методы, которые уже решают поставленные задачи или как-то помогают их решать.


Аватары экспертов Хекслета

Остались вопросы? Задайте их в разделе «Обсуждение»

Вам ответят команда поддержки Хекслета или другие студенты

Об обучении на Хекслете

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff

Используйте Хекслет по-максимуму!

  • Задавайте вопросы по уроку
  • Проверяйте знания в квизах
  • Проходите практику прямо в браузере
  • Отслеживайте свой прогресс

Зарегистрируйтесь или войдите в свой аккаунт

Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»