Java提供了三个类用于表示字符序列:String、StringBuffer和StringBuilder。String类是不可变的,而StringBuffer和StringBuilder类是可变的。StringBuffer和StringBuilder之间有许多区别。StringBuilder类是从JDK 1.5开始引入的。

下面列出了 StringBuffer 和 StringBuilder 之间的差异:

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

字符串缓冲区示例

BufferTest.java

//Java程序演示StringBuffer类的使用。 
public class BufferTest{  
    public static void main(String[] args){  
        StringBuffer buffer=new StringBuffer("hello");  
        buffer.append("java");  
        System.out.println(buffer);  
    }  
}  

输出:

hellojava

字符串生成器示例

BuilderTest.java

//Java程序演示StringBuilder类的使用。 
public class BuilderTest{  
    public static void main(String[] args){  
        StringBuilder builder=new StringBuilder("hello");  
        builder.append("java");  
        System.out.println(builder);  
    }  
}  

输出:

hellojava

StringBuffer和StringBuilder的性能测试

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

ConcatTest.java

//用于演示StringBuffer 和StringBuilder 类性能的Java 程序。
public class ConcatTest{  
    public static void main(String[] args){  
        long startTime = System.currentTimeMillis();  
        StringBuffer sb = new StringBuffer("Java");  
        for (int i=0; i<10000; i++){  
            sb.append("Tpoint");  
        }  
        System.out.println("Time taken by StringBuffer: " + (System.currentTimeMillis() - startTime) + "ms");  
        startTime = System.currentTimeMillis();  
        StringBuilder sb2 = new StringBuilder("Java");  
        for (int i=0; i<10000; i++){  
            sb2.append("Tpoint");  
        }  
        System.out.println("Time taken by StringBuilder: " + (System.currentTimeMillis() - startTime) + "ms");  
    }  
}  

输出:

Time taken by StringBuffer: 16ms
Time taken by StringBuilder: 0ms

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想