Java 提供了三个类来表示字符序列:StringStringBufferStringBuilder。 String 类是不可变类,而 StringBufferStringBuilder 类是可变的。 StringBufferStringBuilder 有很多不同之处。 StringBuilder 类是从 JDK 1.5 开始引入的。
StringBuffer 和 StringBuilder 的区别列表如下:

StringBuffer StringBuilder
StringBuffer 是同步的,即线程安全的。 这意味着两个线程不能同时调用 StringBuffer 的方法。 StringBuilder 是非同步的,即不是线程安全的。所以两个线程可以同时调用 StringBuilder 的方法。
StringBuffer 比 StringBuilder 效率低。 StringBuilder 比 StringBuffer 更高效。
StringBuffer 在 Java 1.0 中引入 StringBuilder 在 Java 1.5 中引入

StringBuffer示例

代码文件:BufferTest.java

//Java Program to demonstrate the use of StringBuffer class.  
public class BufferTest{  
    public static void main(String[] args){  
        StringBuffer buffer=new StringBuffer("hello");  
        buffer.append(", vsdiffer.com");  
        System.out.println(buffer);  
    }  
}

执行上面示例代码,得到以下结果 -

hello, vsdiffer.com

StringBuilder示例

代码文件:BuilderTest.java

//Java Program to demonstrate the use of StringBuilder class.  
public class BuilderTest{  
    public static void main(String[] args){  
        StringBuilder builder=new StringBuilder("hello");  
        builder.append(", yiibai.com");  
        System.out.println(builder);  
    }  
}

执行上面示例代码,得到以下结果 -

hello, yiibai.com

StringBuffer 和 StringBuilder 的性能测试

下面让我们看一下检查 StringBuffer 和 StringBuilder 类的性能的代码。

文件:ConcatTest.java

//Java Program to demonstrate the performance of StringBuffer and StringBuilder classes.  
public class ConcatTest{  
    public static void main(String[] args){  
        long startTime = System.currentTimeMillis();  
        StringBuffer sb = new StringBuffer("Hello");  
        for (int i=0; i<990000; i++){  
            sb.append(", vsdiffer.com");  
        }  
        System.out.println("Time taken by StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms");  
        startTime = System.currentTimeMillis();  
        StringBuilder sb2 = new StringBuilder("Hello");  
        for (int i=0; i<990000; i++){  
            sb2.append(", yiibai.com");  
        }  
        System.out.println("Time taken by StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms");  
    }  
}

执行上面示例代码,得到以下结果 -

Time taken by StringBuffer: 71ms
Time taken by StringBuilder: 20ms
欢迎任何形式的转载,但请务必注明出处,尊重他人劳动成果。
转载请注明:文章转载自 有区别网 [http://www.vsdiffer.com]
本文标题:StringBuffer和StringBuilder的区别
本文链接:https://www.vsdiffer.com/vs/difference-between-stringbuffer-vs-stringbuilder.html
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。