StringBuffer类与string类的区别

与String的区别:

1.   StringBuffer的运行效率更快,因为没有产生中间垃圾对象,一直在原来的值上修改。而String会产生很多中间对象,我们只关心最后的结果,所以这些中间对象都是垃圾,产生了中间变量,导致运行效率低。

2.   StringBuffer用于生成字符串,String用于表示字符串。

3.   StringBuffer是“可变化的量”,也就是在运行时可以修改,不必产生中间对象。String是常量,不可修改,所以会产生中间对象。

示例如下:

packagestringbuffer;

publicclass Demo1 {

    public static void main(String[] args) {

       String s = "";

       StringBuffer sb = new StringBuffer();//创建一个StringBuffer对象

       System.out.println(System.currentTimeMillis());//s=s+i时,输出当前时间是:1524809612430             执行sb.append(i)时,输出当前时间是:1524809728105;

       for(int i = 1;i<=1000;i++){

           sb.append(i);//StringBuffer对象在原字符串的基础上,不断追加,修改了原来的值,得到的是一个最终的结果,没有中间垃圾对象的产生。

           //s = s+i;//因为string是常量,一旦确定,不可修改。所以每次string在做字符串相加的时候,都会产生新的对象,导致中间过程产生了很多字符串常量垃圾对象。与StringBuffer相比,效率低很多。

       }     

       System.out.println(System.currentTimeMillis());//s=s+i时,输出当前时间是:1524809612440,运行了10ms       执行sb.append(i)时,输出当前时间是:1524809728105;说明StringBuffer运行效率高。

    }

}

你可能感兴趣的:(java,java学习)