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>--><strong>AbstractStringBuilder</strong>--><strong>Object</strong></p>
18
<p><strong>String builder</strong>и<strong>String buffer</strong>--><strong>AbstractStringBuilder</strong>--><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>