String, StringBuffer и StringBuilder в Java - это классы String, часто используемые в программировании. Подводя итог, посмотрите на их различия и то же самое.
1. Переменная и неизменная
Класс строки использует массив символов, чтобы сохранить строку.
Частная конечная стоимость символа [];
Как StringBuilder, так и StringBuffer унаследованы от класса AbstractStringBuilder.
char [] значение;
2. Это безопасно?
Объекты в строке неизменны, которые можно понимать как постоянные, очевидно, поток безопасен.
AbstractStringBuilder - это общественный родительский класс между StringBuilder и StringBuffer, определяющим основные операнты некоторой строки, такие как ExpandCape, добавление, вставка, индекс и другие публичные методы.
StringBuffer добавляет синхронную блокировку, или метод вызова добавляется в метод, поэтому он является потоком. См. Следующий исходный код:
Код кода копирования следующим образом:
Публичный синхронизированный stringbuffer reverse () {{) {
Super.Reverse ();
Вернуть это;
}
public int indexof (String str) {
Return indexof (str, 0);
}
StringBuilder не имеет синхронной блокировки на методе, поэтому это нечищенная безопасность.
3. StringBuilder и StringBuffer в общем
StringBuilder и StringBuffer имеют публичный родитель -класс AbstractStringBuilder (Abstract Class).
Одно из различий между абстрактными классами и интерфейсами: некоторые публичные методы некоторых подклассов могут быть определены в абстрактных классах. метода в определении интерфейса.
Методы StringBuilder и StringBuffer называют публичные методы в AbstractStringBuilder, такие как Super.Appending (...). Только что StringBuffer добавит синхронизированное ключевое слово в метод для синхронизации.
Наконец, если программа не является многопоточной, эффективность использования StringBuilder выше, чем StringBuffer.