Java语言StringBuffer 、 StringBuilder 、 String 之间的关系
StringBuffer、 StringBuilder 、 String 互相转换
StringBuffer 类和 StringBuilder 类都有 toString ()方法,可以返回字符序列的字符串表示形式。字符串可转化为前两种,前两种可用tostring()转化成字符串,因此StringBuffer、 StringBuilder互相转化通对方先转化成string,再转化成对方。
这两个类在初始化的时候,可以通过字符串作为参数,指定初始化的字符序列内容。
创建 StringBuffer 对象、 StringBuilder 对象、 String 对象,并将三者的内容互相转换。
public class StringInterchange {
public static void main ( String [] args ){
String str =" String ";
StringBuffer sbf = new StringBuffer ( str )// String转化成StringBuffer
StringBuilder sbd = new StringBuilder ( str );// String转化成stringBuilder
str = sbf . toString ():// StringBufer转化成string
str=sbd . toString ():// StringBuilder转化成String
StringBuilder bufferToBuilder = new StringBuilder ( sbf . toString ());
// String Buffer 转换成 StringBuilder
StringBuffer builderToBuffer = new StringBuffer ( sbd . toString ());
// String Builder 转换成 StringBufer
StringBuffer 、 StringBuilder 、 String 的不同之处
String 只能赋值一次,每一次内容发生改变都生成了一个新的对象,然后原有的对象引用新的对象,所以说 String 本身是不可改变。每一次改变 String 的字符串内容,都会在内存创建新的对象,而每一次生成新对象都会对系统性能产生影响,会降低 Java 虚拟机的工作效率。
String 对象内容修改后引用了新的对象,StringBuffer 和 StringBuilder 不同,每次操作都是对自身对象做操作,而不是生成新的对象,其所占空间会随着字符内容增加而扩充,做大量的修改操作时,不会因生成大量匿名对象而影响系统性能。