StringBuilder
的介绍
由于
String
的不可更改特性,为了方便字符串的修改,
Java
中又提供
StringBuilder
和
StringBuffer
类。这两个类大部分功能是相同的,
public static void main(String[] args) {
StringBuilder stringBuilder=new StringBuilder();
stringBuilder.append("hello");
stringBuilder.append("world");
System.out.println(stringBuilder);
System.out.println(stringBuilder.reverse());
System.out.println(stringBuilder.replace(0,3,"hello"));
}
StringBuff append(String
str)
即尾插,在尾部追加,相当于
String
的
+=
,可以追加:
boolean
、
char
、
char[]
、
double
、
float
、
int
、
long
、
Object
、
String
、
StringBuff
的变量
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
StringBuffer reverse()
反转字符串
StringBuffer replace(int start, int end, String str)
将
[start, end)
位置的字符替换为
str
String
和
StringBuilder
最大的区别在于
String
的内容无法修改,而
StringBuilder
的内容可
以修改
。频繁修改字符串的情况考虑使用
StringBuilder
。
注意:
String
和
StringBuilder
类不能直接转换。如果要想互相转换,可以采用如下原则
:
String
变为
StringBuilder:
利用
StringBuilder
的构造方法或
append()
方法
public StringBuilder append(String str) {
super.append(str);
return this;
}
StringBuilder变为String: 调用toString()方法
1String
、StringBuffer、StringBuilder的区别
String
的内容不可修改,
StringBuffer
与
StringBuilder
的内容可以修改
.在append方法中StringBuffer和StringBuilder的返回值是this,说明是在原有的字符串上修改的
StringBuffer
与
StringBuilder
大部分功能是相似的
StringBuffer
采用同步处理,属于线程安全操作;而
StringBuilder
未采用同步处理,属于线程不安操作
public synchronized StringBuffer append(String str) {
toStringCache = null;
super.append(str);
return this;
}
比较重要的一点,在StringBuffer的append方法中多了synchronized关键字,进入synchronized修饰的代码块,相当于加锁,多线程情况下可以保证线程安全,StringBuilder则没有