美文网首页
学习Java中的StringBuffer和StringBuild

学习Java中的StringBuffer和StringBuild

作者: 徐云辉xm | 来源:发表于2018-03-28 09:50 被阅读0次

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";

        StringBuffer sb=new StringBuffer();

        sb.append(a);

        sb.append(b);

        sb.append(c);

        sb.append(d);

        String abcd=sb.toString();

        System.out.println(abcd);

    }

}

        上例是通过StringBuffer来拼接字符串的,它无法保证线程的安全如果在拼接字符串的过程中可能会涉及到线程安全的问题,则应该使用StringBuilder,它们两者的功能和API是类似的。

在Java程序中,如果有大量拼接字符串的话,应该使用StringBuffer和StringBuilder类,它们可以避免不必要的String对象的 产生,以提高程序的性能。它们两者的作用类似,只不过StringBuilder线程是安全的。

相关文章

网友评论

      本文标题:学习Java中的StringBuffer和StringBuild

      本文链接:https://www.haomeiwen.com/subject/hkqycftx.html