Различия между классами для работы с текстом в Java String и StringBuffer

1

Когда я объявляю, что String выглядит так:

String a= "Hello, World!"

Я бы хотел спросить: String делает из массива?

Кроме того, я понимаю, что StringBuffer специально предназначен для редактирования текста. Если я использую String текст не может быть изменен во время выполнения программы, это означает, что если я хочу изменить или работать с текстом, я должен использовать StringBuffer.

Это правильные парни?

Показать ещё 4 комментария
Теги:

8 ответов

1
  1. Зона хранения
    1.1 String - постоянный пул строк
    1.2 StringBuffer - куча
    1.3 StringBuilder - Куча

  2. модифицируемый
    2.1 String - Нет (неизменяемая)
    2.2 StringBuffer - Да (изменяемый)
    2.3 StringBuilder - Да (измененный)

  3. Потоковое Сейф
    3.1 String - Да
    3.2 StringBuffer - Да
    3.3 StringBuilder - нет

  4. Представление
    4.1 String - быстро
    4.2 StringBuffer - очень медленно
    4.3 StringBuilder - быстрый

  • 0
    Пожалуйста, переформатируйте ваш ответ, так как он не легко читается.
0

да. Если вы хотите сохранить строку, которая не изменится, вы можете использовать тип данных String. Если вам нужен тип данных, поддерживающий модификацию значений, StringBuilder или StringBuffer лучше, чем String.

0

Вы всегда можете изменить строку в java как:

String value = "hello";
value = value + " world";
System.out.println(value); // "hello world"

Но это вычислительно интенсивно, вместо этого вы должны использовать StringBuilder:

StringBuilder value = new StringBuilder("hello");
value.append(" world");
System.out.println(value.toString()); // "hello world"
0

эй, вы можете изменить значение строки

см. пример

String s="raju";
s=s+"ravi";

если мы напечатаем s он распечатает

раджу рави.

но StringBuffer для потокобезопасности, когда вы используете String в многопоточной среде, рекомендуется использовать StringBuffer.

Если вы хотите не сохранять неизменяемую, а не многопоточную среду и более высокую производительность, рекомендуется использовать StringBuilder

0

Строки неизменяемы в java, тогда как классы StringBuffer и StringBuilder используются, когда есть необходимость внести много изменений в строки символов.

В отличие от строк, объекты типа StringBuffer и Stringbuilder могут быть изменены снова и снова, не оставляя много новых неиспользуемых объектов.

Класс StringBuilder был представлен с Java 5, и основное отличие между StringBuffer и StringBuilder заключается в том, что методы StringBuilders не являются потокобезопасными (не синхронизированными).

Рекомендуется использовать StringBuilder по возможности, потому что он быстрее, чем StringBuffer. Однако, если необходима безопасность потока, лучшим вариантом являются объекты StringBuffer. пример

public class Test{

public static void main(String args[]){
   StringBuffer sBuffer = new StringBuffer(" test");
   sBuffer.append(" String Buffer");
   System.ou.println(sBuffer);  
   }
}

вы можете также использовать delete(int start, int end), public insert(int offset, int i),replace(int start, int end, String str) functions with string builder and buffer class

подробнее см. ссылку

0

Вы можете использовать оба для работы с текстом, но главное отличие состоит в том, что при выполнении конкатенаций "StringBuffer" быстрее, чем "String".

0

Если многопользователи работают в String, лучше использовать StringBuffer (Thread-safe)

Если только один пользователь будет редактировать, что String лучше использовать StringBuilder (быстрее, лучше)

с другой стороны String является неизменным, что означает, что если вы НЕ планируете редактировать свою строку, вам лучше перейти на объект Simple String поскольку он будет быстрее через кеширование

0

Если у вас есть

String a="Hello";

и вы делаете a=a+"World"; , тогда первая строка "удаляется", и у вас есть новый строковый объект (объект, который ссылается на ссылку). С другой стороны, если у вас есть

StringBuffer a=new StringBuffer("Hello");

и вы write a.append("world"); , a остается неизменным (эта же ссылка, только состояние объекта было изменено, а не ссылка). Извините за мой английский..

public class Puzzle {
    public static void main(String args[]) {
        String a = new String("Hello");
        String b = a;
        System.out.println(a == b); //it s true
        a = a + "world";
        System.out.println(a == b); //it s false

        StringBuffer c = new StringBuffer("Hello");
        StringBuffer d = c;
        System.out.println(c == d); //it s true
        c.append("world");
        System.out.println(c == d); //it s true
    }

}

Ещё вопросы

Сообщество Overcoder
Наверх
Меню