StringBuffer和StringBuilder存在的作用是什么

Java的字符串String对象,有一个特性就是不变性,它只能被创建,而不能改变其中的值。因此,一些大量使用字符串的程序可能会出现性能瓶颈,甚至内存溢出。针对这样的问题,Java为开发者提供了相应的解决方案。
public class StringBBTest{
    public static void main(String args []){
        String a="a";
        String b="b";
        String c="c";
        String d="d";
        String abcd=a+b+c+d;
    }
}
以上代码中,一共创建了7个String对象。对于a、b、c、d变量,它们都是通过双引号的形式来创建的String对象。而abcd变量则是通过它们4者相连得到,在相连的过程中,首先执行a+b的操作,产生了ab字符串,然后再加上c,又产生了abc字符串,最后加上d才得到abcd的String对象。
由以上的示例可以看出,通过String直接相加来拼接字符串的效率是很低的,其中可能会产生多余的String对象,例如ab,abc。如果程序中需要拼接的字符串数量成千上万,那么JVM的负荷是相当大的,严重影响到程序的性能。其实,如果有大量的字符串需要拼接的话,应该使用StringBuffer和StringBuilder类,它们是对String的一种补充。例如,同样的功能,可以这样来写代码以提高程序性能,示例如下:
public class StringBBTest{
    public static void main(String args []){
        String a="a";
        String b="b";
        String c="c";
        String d="d";
        StringBuilder sb=new StringBuilder();
        sb.append(a);
        sb.append(b);
        sb.append(c);
        sb.append(d);
        String abcd=sb.toString();
        System.out.println(abcd);
    }
}
上例是通过StringBuilder来拼接字符串的,它无法保证线程的安全。如果在拼接字符串的过程中可能会涉及到线程安全的问题,则应该使用StringBuffer,它们两者的功能和API是类似的。
在Java程序中,如果有大量拼接字符串的话,应该使用StringBuffer和StringBuilder类,它们可以避免不必要的String对象的 产生,以提高程序的性能。它们两者的作用类似,只不过StringBuffer线程是安全的。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值