JAVA-StringBuilder和StringBuffer

普通String字符串的拼接,不能改变字符串,而是重新分配内存地址存入了改变后新的字符串,而这样如果是在循环中,每改变一次字符串都要重新分配一次内存地址,无疑浪费了更多内存,效率变低。

 StringBuilder

用StringBulider进行拼接,不会重新分配地址,它是一个可变对象,可以预先分配缓冲区,所以能有效提高字符串拼接效率

如下,创建StringBulider对象,用append方法拼接

public class demo07 {
	public static void main(String[] args) {
		StringBuilder sb=new StringBuilder(1024);
		for(int i=0;i<1000;i++) {
			sb.append(',');
			sb.append(i);
		}
		String s=sb.toString();
		System.out.println(s);;
	}
}

StringBuffer

这是JAVA早期的进行字符串拼接的线程安全的版本,它通过加了一个锁(synchronized),线程更安全,但是这样就使得性能变差,现在还是更多使用的是StringBulider。

        StringBuffer sb1=new StringBuffer(1024);
        for(int i=0;i<1000;i++) {
            sb.append(',');
            sb.append(i);
        }
        String s1=sb.toString();
        System.out.println(s1);

两者区别

  1. 都是专用与字符串拼接的类,两者都可改变字符串
  2. 都继承自AbstractStringBuilder类
  3. 都实现了同样两个接口
  4. StringBuffer加锁,比StringBulider的线程更安全
  5. StringBulider比StringBuffer的效率高,性能更好

你可能感兴趣的:(java,开发语言)