Java用String、StringBuilder、StringBuffer三个类来封装对字符串的操作。
String类中对字符串的保存格式为
private final char value[];
它被final所修饰,所以它是不可变的,从它被创建直至被销毁,它的字符序列都没有改变,我们对它的一系列操作都是通过创建新的String对象来完成的。(很浪费资源)
StringBuilder、StringBuffer两个类都继承自抽象类AbstractStringBuilder,它们对字符串的保存格式为
char[] value;
所以它们是可变的,我们可以通过它提供的方法(如append(),insert()等)通过直接修改字符序列来完成对字符串的操作。
StringBuilder、StringBuffer与String类之间的转换
当我们通过一系列对StringBuilder、StringBuffer对象的转换后得到最终自己需要的字符串,可以通过toString()
方法来将StringBuilder、StringBuffer对象转化为String对象。
抽象父类AbstractStringBuilder中的toString()方法:
public abstract String toString();
一般适用场景
-
String:适用于少量的字符串操作的情况
-
StringBuilder:适用于单线程下在字符缓冲区进行大量操作的情况
-
StringBuffer:适用多线程下在字符缓冲区进行大量操作的情况