JAVA-StringBuilder和StringBuffer

本文比较了Java中的普通String、StringBuilder和StringBuffer在字符串拼接上的性能差异,指出StringBuilder由于不频繁重新分配内存地址,效率更高,而StringBuffer提供线程安全但性能较低。
摘要由CSDN通过智能技术生成

普通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的效率高,性能更好

  • 14
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值