2012-02-29 2 views
-1

Можно создать дубликат:
StringBuilder and StringBuffer in JavaWha особенного в использовании StringBuilder InstEd из StringBuffer

Я хотел бы знать разницу между StringBuilder и StringBuffer. В StringBuffer он автоматически выделяет 16 символов. Когда мы добавляем строку «привет», ее емкость увеличивается до 21. Может ли кто-нибудь разъяснить мои сомнения?

+1

-1 для того, чтобы не прочитать Javadoc в первую очередь. – EJP

ответ

6

Вы посмотрели на Javadocs?

От http://docs.oracle.com/javase/7/docs/api/java/lang/StringBuilder.html:

Этот класс предоставляет API, совместимый с StringBuffer, но без гарантии синхронизации. Этот класс предназначен для использования в качестве замены для StringBuffer в местах, где буфера строк используется одним потоком (как это обычно бывает). По возможности рекомендуется, чтобы этот класс использовался в предпочтении StringBuffer, поскольку в большинстве реализаций он будет быстрее.

+0

[Здесь] (http://download.java.net/jdk7/archive/b123/docs/api/java/lang/StringBuilder.html) JDK 7 javadoc: «Экземпляры StringBuilder небезопасны для использования несколько потоков. Если такая синхронизация требуется, рекомендуется использовать StringBuffer " – Jerome

+0

yes .... thank u claesv – Mithun

2

StringBuffer является потокобезопасным (т. Е. Его методы синхронизированы). Однако это не требуется для каждого приложения, и это делает код медленнее, чем в противном случае. StringBuilder по существу является StringBuffer без синхронизации и, следовательно, бит быстрее.

3

Главное отличие состоит в том, что StringBuffer является потокобезопасным (все его методы синхронизированы), но StringBuilder нет. Но StringBuilder быстрее, чем StringBuffer.Use StringBuilder, если вам не нужна безопасность потоков.