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


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

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

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

Ошибки, сложный материал, вопросы >
Нашли опечатку или неточность?

Выделите текст, нажмите ctrl + enter и отправьте его нам. В течение нескольких дней мы исправим ошибку или улучшим формулировку.

Что-то не получается или материал кажется сложным?

Загляните в раздел «Обсуждение»:

  • задайте вопрос. Вы быстрее справитесь с трудностями и прокачаете навык постановки правильных вопросов, что пригодится и в учёбе, и в работе программистом;
  • расскажите о своих впечатлениях. Если курс слишком сложный, подробный отзыв поможет нам сделать его лучше;
  • изучите вопросы других учеников и ответы на них. Это база знаний, которой можно и нужно пользоваться.
Об обучении на Хекслете

Для полного доступа к курсу нужна профессиональная подписка

Профессиональная подписка откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
900
упражнения
2000+
часов теории
3200
тестов

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

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

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

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

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

Есть вопрос или хотите участвовать в обсуждении?

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

Отправляя форму, вы соглашаетесь c «Политикой конфиденциальности» и «Условиями оказания услуг»