Разница между String и StringBuffer / StringBuilder в Java

Здесь String неизменен, означает, что вы не можете изменить сам объект, но вы можете изменить ссылку на объект, тогда как StringBuffer и StringBuilder являются изменяемыми, поэтому они могут изменять свои значения.

Вышеупомянутый сегмент кода создает 500 новых строковых переменных. Оператор «+» перегружен для String и используется для конкатенирования двух строк. Внутренняя операция «+» выполняется с использованием либо StringBuffer, либо StringBuilder. В таких ситуациях вы должны использовать класс Java StringBuffer / StringBuilder.

Пример

...

Лучше использовать объект String, когда требуется неизменная структура, получение новой последовательности символов из String может привести к неприемлемому снижению производительности либо в процессорном времени, либо в памяти.

Разница в потоке безопасности

StringBuffer синхронизирован, т. Е. Поточный поток StringBuffer. Это означает, что два потока не могут одновременно вызвать методы StringBuffer. Пока StringBuilder не синхронизирован, то есть не потокобезопасен. Это означает, что два потока могут одновременно вызвать методы StringBuilder. Итак, если вы не собираетесь использовать потоки, используйте класс StringBuilder, поскольку он будет более эффективен, чем StringBuffer из-за отсутствия синхронизации. Методы StingBuilder не синхронизированы, но по сравнению с другими строками, Stringbuilder работает быстрее всего.

Почему у нас есть два класса для одной цели?

 

StringBuffer - это Thread safe, а StringBuilder - нет. StringBuilder - это новый класс в StringBuffer Api, и он был представлен в JDK 5 и всегда рекомендуется, если вы работаете в среде с одним потоком, поскольку он намного быстрее.

Источник: http://net-informations.com/Java/cJava/builder.htm

1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (Пока оценок нет)
Adblock
detector