Строка строка постоянной
Stringbuffer string переменная (поток безопасен)
StringBuilder String Variable (не сборочная безопасность)
Проще говоря, основная разница в производительности между типом строки и типом StringBuffer на самом деле заключается в том, что строка является неизменным объектом. Поэтому каждый раз, когда вы меняете тип строки, он на самом деле эквивалентно генерированию нового строкового объекта и указанию указателя на новый объект строки. Следовательно, лучше не использовать строки для строк, которые часто меняют контент, потому что каждый раз, когда генерируется объект, он окажет влияние на производительность системы. Особенно, когда в памяти слишком много ссылочных объектов, GC JVM начнет работать, что определенно будет довольно медленным.
Если вы используете класс StringBuffer, результат будет другим. Каждый раз, когда результат будет работать на самом объекте StringBuffer, вместо того, чтобы генерировать новый объект, а затем изменять ссылку объекта. Поэтому, в целом, мы рекомендуем использовать StringBuffer, особенно когда строки часто меняются. В некоторых особых случаях строковая сплайсинг строковых объектов фактически интерпретируется JVM как сплайсинг объектов StringBuffer. Следовательно, скорость строковых объектов не более медленнее, чем объекты StringBuffer в настоящее время. Особенно в следующей генерации объектов строковых объектов эффективность строки намного быстрее, чем StringBuffer:
Строка S1 = "Это только тест" + "простой" + ";
StringBuffer sb = new StringBuilder («Это только»). Append ("simple"). Append ("test");
Вы будете удивлены, обнаружив, что скорость генерации объектов S1 S1 просто слишком быстра, и в настоящее время StringBuffer не имеет никакого преимущества в скорости. На самом деле, это хитрость JVM. В глазах JVM это
Строка S1 = "Это только тест" + "простой" + "; на самом деле это:
String S1 = "Это только простой тест"; Так что, конечно, это не займет слишком много времени. Но вы должны отметить, что если ваша строка от другой
Для строковых объектов скорость не такая быстрая, например:
Строка S2 = «Это только a»;
String S3 = "simple";
Строка S4 = "test";
Строка S1 = S2 + S3 + S4;
В настоящее время JVM будет делать это регулярно оригинальным образом
В большинстве случаев StringBuffer> строка
StringBuffer
Java.lang.stringbuffer Thread-Safe Mintable символа. Строковый буфер строк, но не может быть изменен. Хотя он содержит определенную последовательность символов в любой момент времени, длина и содержание последовательности могут быть изменены некоторыми вызовами метода.
Буферы строк могут использоваться безопасно для нескольких потоков. Эти методы могут быть синхронизированы при необходимости, поэтому все операции в любом конкретном экземпляре, по -видимому, происходят в последовательном порядке, который согласуется с порядком вызовов методов, выполненных каждым вовлеченным потоком.
Основными операциями на StringBuffer являются методы добавления и вставки, которые могут быть перегружены, чтобы принять любой тип данных. Каждый метод может эффективно преобразовать заданные данные в строку, а затем добавить или вставить символы этой строки в буфер строки. Метод добавления всегда добавляет эти символы к концу буфера; Метод вставки добавляет символы в указанной точке.
Например, если z относится к объекту буфера строкового буфера, текущий содержимое которого «запуск», этот метод Call z.append («Le») заставляет буфер строкового буфера содержит «испуг», а z.insert (4, «le») изменяет буфер строк, чтобы содержать «звездочка».
В большинстве случаев StringBuilder> StringBuffer
java.lang.stringbuilde
java.lang.stringbuilder Переменная последовательность символов является новой в 5.0. Этот класс предоставляет API-совместимый с StringBuffer API, но не гарантированно будет синхронизировать. Этот класс предназначен для простой замены для StringBuffer, когда строковые буферы используются одним потоком (это обычно). Если возможно, рекомендуется первым заняться этим классом, так как он быстрее, чем StringBuffer в большинстве реализаций. Методы обоих в основном одинаковы.
Выше представляет собой сборник информации о Java String, StringBuffer и StringBuilder. Мы будем продолжать добавлять соответствующую информацию в будущем. Спасибо за поддержку этого сайта!