В java, String
Объекты immutable
. После создания строкового объекта его данные или состояние не могут быть изменены, но создается новый строковый объект.
Рассмотрим пример, приведенный ниже:
class Demo{
public static void main(String args[]){
String s="Demo";
s.concat("String");//concat() method appends the string at the end
System.out.println(s);
}
}
Выход:
Demo
Здесь новый модифицированный строковый литерал создается и удаляется.
Если мы относим его к исходной переменной, она будет относиться к модифицированному object.For например:
class Demo{
public static void main(String args[]){
String s="Demo";
s=s.concat("String");
System.out.println(s);
}
}
Выход:
DemoString
Java StringBuilder
класс используется для создания изменяемой строки.
class Demo{
public static void main(String args[]){
StringBuilder sb=new StringBuilder("Demo");
sb.append("String");//now original string is changed
System.out.println(sb);
}
}
Выход:
DemoString
'StringBuilder' часто возвращает тот же экземпляр' StringBuilder', так что вы можете сделать метод формирования цепочки 'sbuf.append ("Hello") .deletCharAt (0) '==' ello'. Этот подход часто используется объектами, реализующими шаблон построителя, поскольку он помогает вам сократить повторяющийся код. – MadProgrammer
Я могу понять ваши коды. Но в этом коде 'sbuf.deleteCharAt (0);', где возвращается экземпляр?к компилятору Java? или Основной метод? – Volnyar
Рассмотрите оцениваемое выражение шаг за шагом; 'sbuf' оценивается как ссылка на экземпляр StringBuffer, в этом экземпляре вызывается метод, поэтому' sbuf.deleteCharAt (0) 'оценивается как ссылка на экземпляр StringBuffer и т. д. Экземпляр возвращается из метода deleteCharAt в вызывающее выражение. – Luke