HTML Diff
0 added 0 removed
Original 2026-01-01
Modified 2026-02-26
1 <h2>Создание строк</h2>
1 <h2>Создание строк</h2>
2 <ul><li><p>С помощью присвоения некой строки соответствующей по типу ссылке: final String string = "Some string";</p>
2 <ul><li><p>С помощью присвоения некой строки соответствующей по типу ссылке: final String string = "Some string";</p>
3 </li>
3 </li>
4 <li><p>С помощью конструктора, который на вход принимает строку:</p>
4 <li><p>С помощью конструктора, который на вход принимает строку:</p>
5 </li>
5 </li>
6 </ul><p>final String name = new String("Slava");</p>
6 </ul><p>final String name = new String("Slava");</p>
7 <ul><li>С помощью массива символов. Для начала уясним:<strong>Литералы</strong>- это объекты, которые создаются в коде на основании записи, сделанной по определенным правилам. Двойные кавычки означают, что это строковый литерал и содержимое должно быть преобразовано в объект String. Одинарные кавычки - объект char. Зная это, можно переписать строку из предыдущего примера следующим образом: </li>
7 <ul><li>С помощью массива символов. Для начала уясним:<strong>Литералы</strong>- это объекты, которые создаются в коде на основании записи, сделанной по определенным правилам. Двойные кавычки означают, что это строковый литерал и содержимое должно быть преобразовано в объект String. Одинарные кавычки - объект char. Зная это, можно переписать строку из предыдущего примера следующим образом: </li>
8 </ul><p>Теперь вы знаете, что String это ссылочный тип, который внутри реализован как массив char.</p>
8 </ul><p>Теперь вы знаете, что String это ссылочный тип, который внутри реализован как массив char.</p>
9 <ul><li>С помощью специальных классов-билдеров. Существует два специальных класса для создания String: StringBuilder и StringBuffer.<strong>StringBuilder</strong>резервирует массив на 16 символов больше, чем нужно изначально. Следующее увеличение размера в два раза плюс один символ. Работает намного быстрее, чем через обычный String().</li>
9 <ul><li>С помощью специальных классов-билдеров. Существует два специальных класса для создания String: StringBuilder и StringBuffer.<strong>StringBuilder</strong>резервирует массив на 16 символов больше, чем нужно изначально. Следующее увеличение размера в два раза плюс один символ. Работает намного быстрее, чем через обычный String().</li>
10 </ul><p><strong>Конструкторы</strong> класса StringBuilder:</p>
10 </ul><p><strong>Конструкторы</strong> класса StringBuilder:</p>
11 <ol><li><p>Создает массив через конструктор супер, передает туда длину строки плюс 16 символов и добавляет текущую строчку.</p>
11 <ol><li><p>Создает массив через конструктор супер, передает туда длину строки плюс 16 символов и добавляет текущую строчку.</p>
12 </li>
12 </li>
13 <li><p>Создает пустой массив заданной длины.</p>
13 <li><p>Создает пустой массив заданной длины.</p>
14 </li>
14 </li>
15 <li><p>Default - создает массив на 16 символов.</p>
15 <li><p>Default - создает массив на 16 символов.</p>
16 </li>
16 </li>
17 </ol><p>Наследование и предки этих билдеров:</p>
17 </ol><p>Наследование и предки этих билдеров:</p>
18 <p><strong>String builder</strong>и<strong>String buffer</strong>--&gt;<strong>AbstractStringBuilder</strong>--&gt;<strong>Object</strong></p>
18 <p><strong>String builder</strong>и<strong>String buffer</strong>--&gt;<strong>AbstractStringBuilder</strong>--&gt;<strong>Object</strong></p>
19 <p>Для StringBuffer работают те же конструкторы и работает он так же, как и StringBuilder, за одним исключением: StringBuffer безопасен для использования в многопоточный среде, но очень медленный. В свою очередь StringBuilder небезопасный для такого использования, но быстр.</p>
19 <p>Для StringBuffer работают те же конструкторы и работает он так же, как и StringBuilder, за одним исключением: StringBuffer безопасен для использования в многопоточный среде, но очень медленный. В свою очередь StringBuilder небезопасный для такого использования, но быстр.</p>
20 <p>Рекомендую почитать спецификации на каждый из этих классов, изучить методы и их применение. Где искать информацию по конкретным классам Вы уже должны знать к этому уроку :)</p>
20 <p>Рекомендую почитать спецификации на каждый из этих классов, изучить методы и их применение. Где искать информацию по конкретным классам Вы уже должны знать к этому уроку :)</p>
21 <p>Отдельно стоит упомянуть<strong>оператор конкатенации</strong>+. Строки он просто объединяет.</p>
21 <p>Отдельно стоит упомянуть<strong>оператор конкатенации</strong>+. Строки он просто объединяет.</p>
22 <p>При<strong>конкатенации</strong>(объединении) строк часто возникают проблемы с выделением памяти, появляется ошибка OutOfMemoryError. Поэтому для частого преобразования строки путем ее наполнения новыми символами или даже строками -<em><strong>лучше использовать билдеры</strong></em>.</p>
22 <p>При<strong>конкатенации</strong>(объединении) строк часто возникают проблемы с выделением памяти, появляется ошибка OutOfMemoryError. Поэтому для частого преобразования строки путем ее наполнения новыми символами или даже строками -<em><strong>лучше использовать билдеры</strong></em>.</p>
23 <p>Из-за больших объемов строк, которые будут объединяться с помощью обычного оператора конкатенации - может зависать программа, т.к.<em><strong>Garbage Collector</strong></em>приостанавливает работу программы для очистки различных остатков строк.</p>
23 <p>Из-за больших объемов строк, которые будут объединяться с помощью обычного оператора конкатенации - может зависать программа, т.к.<em><strong>Garbage Collector</strong></em>приостанавливает работу программы для очистки различных остатков строк.</p>
24 <p><a>Спецификация класса String</a>Не стесняйтесь искать там методы, которые уже решают поставленные задачи или как-то помогают их решать.</p>
24 <p><a>Спецификация класса String</a>Не стесняйтесь искать там методы, которые уже решают поставленные задачи или как-то помогают их решать.</p>