StringBuilder 和 StringBuffer
StringBuffer 和 StringBuilder API 几乎一样
StringBuffer 是java早期提供的,速度稍慢,线程安全
StringBuilder 是 java5以后提供的,速度快,非线程安全
java.lang.StringBuilder
String = char[]+操作(复制创建新对象) char[]不可变
StringBuilder = char[] +对char[]操作(处理当前数组内容)
StringBuilder 内部的 char[]数组内容可变,如果长度不够,利用变长算法维护,自动扩充长度。
StringBuilder sb = new StringBuilder();//默认的长度是16
int capacity = sb.capacity(); //返回当前容量 16
int length = sb.length(); // 实际长度(字符数)
sb = new StringBuilder(10); // 自定义初始长度
主要方法:
StringBuilder append( 要追加的内容 ) 追加,该方法反复操作的适中是一个对象
StringBuilder insert( 偏移量,要插入的内容) 插入
StringBuilder delete( int start,int end) 删除
StringBuilder deleteCharAt(int index)
(都返回对象本身的引用)
String s = s1 + s2;java实际上是按照如下代码运行:
String s = new StringBuilder(s1).append(s2).toString();
s+="a" 会产生两个新对象(StringBuilder 和 String)
s = new StringBuilder(s).append("a").toString();
每做一次字符串拼接就会创建一个新的StringBuilder对象,同时jvm在适时回收这些对象,
如此会严重影响性能。
如果软件需要大量字符串处理时建议使用SringBuilder;
如果对字符串性能有极高要求,则直接操作char[]数组