String、StringBuffer与StringBuilder的区别

来源:互联网 发布:java ssi框架 编辑:程序博客网 时间:2024/06/05 06:11

1、三者在执行速度方面:String <StringBuffer<StringBuilder

    String的执行速度小于后者的原因:

    String是字符串常量,也就是不可改变的对象,StringBuffer和StringBuilder都是字符串变量;

exp:String s = "adidas";
           s = s+1;
           System.out.println(s);//result adidas1

    jvm是这样解释这段代码的:创建对象s,赋值adidas,然后再创建一个对象s用来执行第二行代码,我们之前对象没有变化,所以说String对象是不可改变的对象,由于这种机       制的存在,每当我们用String操作字符串时,实际上是在不断创建新对象,原来的对象会被gc清理掉,执行效率可想而知;

      exp:StringBuilder s2 = new StringBuilder("abc").append("def").append("fgh");

                String s1 = "abc"+"cde" + "fgh";

    这个例子 s1的执行速度快,StringBuilder并不占优势,这是因为对于jvm来说,String s1 = "abc"+"cde" + "fgh"相当于String s1 = "abccdefgh",所以执行速度快,如果字符串来自另外的对象,那么jvm就会按步骤一步一步执行,就不会那么快了;

2、StringBuffer与StringBuilder

StringBuffer是线程安全的,StringBuilder是线程非安全的,在不考虑线程安全性的情况,StringBuilder操作字符串的执行效率更高一些。



只是一些学习笔记,会有别处借鉴的东西。

原创粉丝点击