2015-06-04 3 views
2

Есть много различий между String и (StringBuilder или StringBuffer), как и многие Изменчивость строковых операцийПочему у Java есть StringBuilder или StringBuffer?

Может быть, этот вопрос кажется немного глупым, но я хочу знать, ради программирования парадигмы.

Я хочу спросить, почему Java реализовала другой класс, StringBuilder или StringBuffer для структуры данных, такой как String. Почему они не предоставили эти функции в самом String.

Почему бы не сделать String сам поточно-безопасным или предоставить некоторые дополнительные функции, которые StringBuilder или StringBuffer имеет?

+1

http://stackoverflow.com/questions/355089/stringbuilder-and-stringbuffer –

+0

@ bobs_007 - Я знаю разницу между StringBuffer и StringBuilder, пожалуйста, прочитайте мой вопрос есть полужирный в моем посте –

+0

Если бы я мог хорошо помню Строка Нить безопасная! – Lrrr

ответ

7
  1. Строка неизменна, и есть много причин, а также ее польза. Зачем? и какова его необходимость? (Очень популярная тема) поиск или читать те why-is-string-immutable-in-java или why-string-is-immutable-in-java

  2. Теперь Некоторые один нужно делать частые операции Строки здесь приходит StringBuffer который является поточно (синхронизированным).

  3. Некоторая не нужна защита резьбы здесь StringBuilder.

Теперь некоторые еще можно использовать StringBuffer когда безопасность потока не является необходимым, но это будет медленным. Вот почему они оба важны.

Строки по-разному обрабатываются jvm Если были добавлены функции StringBuffer, это не будет неизменным.


Обновление: пункты 2 и 3 изменены из комментария @Jon Skeet.

+0

Какие типы причины, о которых вы пытаетесь сказать в своем первом пункте? –

+7

Фактически 'StringBuffer' приходил до' StringBuilder', а затем Sun поняла, что невероятно редко требуется безопасность потока, поэтому они представили 'StringBuilder'. Если 'StringBuilder' пришел первым, я сомневаюсь, что' StringBuffer' бы когда-либо был введен. –

+0

благодарит Mr. @ JonSkeet за это. – Saif