Java | Фишки и трюки
7.21K subscribers
182 photos
29 videos
6 files
40 links
Java: примеры кода, интересные фишки и полезные трюки

Купить рекламу: https://telega.in/c/java_tips_and_tricks

✍️По всем вопросам: @Pascal4eg
Download Telegram
⌨️ Внутренняя реализация StringBuilder

Класс StringBuilder предназначен для создания и манипуляции изменяемыми строками. Это альтернативный класс для String, который позволяет изменять его содержимое без создания новых объектов при каждой операции изменения, что делает его более эффективным при частых операциях изменения строк.

Класс StringBuilder использует массив символов для хранения строки и динамически изменяет его размер по мере необходимости. Переменная count отслеживает текущую длину строки.
Упрощенно:

public final class StringBuilder extends AbstractStringBuilder implements java.io.Serializable, CharSequence {
char[] value; // Массив символов, хранящий содержимое строки
int count; // Количество символов в текущем объекте StringBuilder
}


Примерная реализация метода append:

public StringBuilder append(String str) {
if (str == null) str = "null";
int len = str.length();
ensureCapacityInternal(count + len); // расширить массив если нужно
str.getChars(0, len, value, count);
count += len;
return this;
}


Метод str.getChars(..) копирует строку str в массив value в позицию count (то есть добавляет в конец массива).

#java #stringbuilder #implementation
Please open Telegram to view this post
VIEW IN TELEGRAM
👍5🔥31👨‍💻1
⌨️ Какая основная разница между String, StringBuffer, StringBuilder?

Класс String является неизменяемым (immutable) - модифицировать объект такого класса нельзя, можно лишь заменить его созданием нового экземпляра.

Класс StringBuffer изменяемый - использовать StringBuffer следует тогда, когда необходимо часто модифицировать содержимое.

Класс StringBuilder был добавлен в Java 5 и он во всем идентичен классу StringBuffer за исключением того, что он не синхронизирован и поэтому его методы выполняются значительно быстрей.

#java #String #StringBuffer #StringBuilder
Please open Telegram to view this post
VIEW IN TELEGRAM
👍113
🛠 Разница между StringBuilder и StringBuffer

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

➡️ Основные различия:

✔️ StringBuilder быстрее, но не потокобезопасен.
✔️ StringBuffer потокобезопасен, но медленнее из-за синхронизации.

✔️ Пример использования StringBuilder:

StringBuilder sb = new StringBuilder("Hello");
sb.append(" World");
System.out.println(sb); // Hello World


✔️ Пример использования StringBuffer:

StringBuffer sb = new StringBuffer("Hello");
sb.append(" World");
System.out.println(sb); // Hello World


💡 Совет: Если ваш код выполняется в одном потоке, используйте StringBuilder для лучшей производительности.

#java #stringbuilder #stringbuffer
Please open Telegram to view this post
VIEW IN TELEGRAM
👍183🔥2