Один из вопросов, которые часто задаются на собеседовании Java-программистов касается работы со строками. Этот вопрос связан с построением новых строк. Звучит он следующим образом: "В чем разница между String, StringBuffer и StringBuilder?".
Класс String является immutable классом, то есть неизменяемым. После создания объекта String изменить его будеть нельзя. Каждый раз будет создаваться новый объект. Покажем это на примере.
Класс 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().
Комментариев нет:
Отправить комментарий