Java 提供了三个类来表示字符序列:String
、StringBuffer
和 StringBuilder
。 String 类是不可变类,而 StringBuffer
和 StringBuilder
类是可变的。 StringBuffer
和 StringBuilder
有很多不同之处。 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
免责声明:以上内容仅是站长个人看法、理解、学习笔记、总结和研究收藏。不保证其正确性,因使用而带来的风险与本站无关!如本网站内容冒犯了您的权益,请联系站长,邮箱: ,我们核实并会尽快处理。