Поиск по этому блогу

понедельник, 17 декабря 2012 г.

Вопросы на собеседовании Java программиста. Разница между String, StringBuffer и StringBuilder

Один из вопросов, которые часто задаются на собеседовании Java-программистов касается работы со строками. Этот вопрос связан с построением новых строк. Звучит он следующим образом: "В чем разница между String, StringBuffer и StringBuilder?".
Класс String является immutable классом, то есть неизменяемым. После создания объекта String изменить его будеть нельзя. Каждый раз будет создаваться новый объект. Покажем это на примере.
String str = "example";
str = str + " first";
В данном случае сначала будет создан объект класса String со значением "example", а потом будет создан еще один объект класса String со значением "example first". Таким образом, значение объекта класса String никогда не изменяется, каждый раз создается новый объект.

Классы StringBuilder и StringBuffer  предназначены для формирования строк.
Класс StringBuilder был добавлен в Java 1.5 и он во всем идентичен классу StringBuffer, за исключением того, что его небезопасно использовать при работе с потоками. Также класс StringBuilder является более быстрым, чем класс StringBuffer. Класс StringBuffer спроектирован для безопасной работы с потоками.
StringBuffer stringBuffer = new StringBuffer();
for (int i = 0; i < 10; i++) {
  // добавляем к объекту stringBuffer значения
  stringBuffer.append(" " + i);
}
// преобразуем обхект stringBuffer в строку и выводим в консоль
System.out.println(stringBuffer.toString());
В данном случае создается только один объект StringBuffer и его значение изменяется при помощи метода append(). Таким образом можно сформировать необходимую нам строку. Для того, чтобы сформированное значение объекта  stringBuffer преобразовать в строку необходимо вызвать метод toString().



Комментариев нет:

Отправить комментарий