Strng、StringBuffer、StringBuilder的异同
package com.cheng.string;
?
public class StringBufferBuilder01 {
public static void main(String[] args) {
//String、StringBuffer、StringBuilder的异同
//String 不可变的字符序列 底层使用char[]存储
//StringBuffer 不可变的字符序列 底层使用char[]存储 线程安全,效率低
//StringBuilder 不可变的字符序列 底层使用char[]存储 线程不安全,效率高
StringBuffer str = new StringBuffer("123de");
str.setCharAt(2,‘h‘);//替换字符
System.out.println(str);//12hde
/*
创建对象时底层char[]的长度
String s1 = new String(); char[] value = new char[0]
String s2 = new String("zbc"); char value = new char[3]
StringBuffer s3 = new String(); char value = new char[16]
s3.append(‘a‘); value[0] = ‘a‘添加
s3.append(‘b‘); value[1] = ‘b‘
?
StringBuffer s4 = new String("zbc"); char value = new char["zbc".length + 16]
System.out.println(s4.length); 输出3
如果要添加的数据底层数组容不下了,则需要扩充底层的数组
默认情况霞扩充为原来的2倍+2,同时 将原有数组的元素复制到新数组中去
*/
}
}
?