String和StringBuffer有什么区别


   String用于字符串操作,属于不可变类,而StringBuffer也是用于字符串操作,不同之处是StringBuffer属于可变类。

   String是不可变类,也就是说,String对象一旦被创建,其值将不能被改变,而StringBuffer是可变类,当对象被创建后,仍然可以对其值进行修改。如果一个字符串

需要被修改的时候,使用StringBuffer有更高的效率。

  为了更好地说明这一问题,下面分析一个示例。

public class Test {

    public static void testString(){
        String s = "Hello";
        String s1 = "world";
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            s += s1;
        }
        long end = System.currentTimeMillis();
        long runTime = (end - start);
        System.out.println("testString:" + runTime);
    }

    public static void testStringBuffer(){
        StringBuffer s = new StringBuffer("Hello");
        String s1 = "world";
        long start = System.currentTimeMillis();
        for (int i = 0; i < 10000; i++) {
            s.append(s1);
        }
        long end = System.currentTimeMillis();
        long runTime = (end - start);
        System.out.println("testStringBuffer:" + runTime);
    }

    public static void main(String[] args) {
        testString();
        testStringBuffer();
    }
}

   程序的运行结果为

testString:154
testStringBuffer:0

从程序的运行结果可以看出,当一个字符串需要经常被修改的时候,使用StringBuffe比使用String的性能要好很多。

相关