JAVA 关于 StringBuilder

来源:百度知道 编辑:UC知道 时间:2024/05/25 09:06:17
StringBuilder有3个重载
StringBuilder();
StringBuilder(int n);
StringBuilder(String str);
第一个没有指定容量大小默认16个字符
第2个需要指定容量
我现在用第2个去构造字符串生成器
假如StringBuilder bulider=new StringBuilder(5);
开辟5个字符的空间,但是我接下去
bulider.append("ABCDEFGH");
追加8个字符,但是编译器能够正常运行,是不是 字符串生成器能够自动扩大容量? 要是这样,那么 用第一个和第2个构造有区别吗? 不能理解!大家指点下!

当追加的字符串超过原来的字符串时,bulider在内存中申请一个原来2倍大小的串把原来的串后追加的串copy过去,如果2倍大小的串不够大bulider会构造一个原串+追加的串的长度+1的字符串
用第一个串一般是不知道串最终大小的情况下用,用第二个一般是可以预知串的大小,节约下每次字符串的大小不够时重新申请内存空间的时间