Java的String和StringBuffer还有StringBuilder

136 阅读1分钟

String类是被final最终关键字修饰的,所以无法被修改。

所以我们在使用String类型进行字符串拼接时,java每次都会创建一个新的对象。

效率非常的低。

让我们来测试一下。

public class StringTest {
    public static void main(String[] args) {

        String one = "";
        // StringBuffer one = new StringBuffer("");

        long startTime = System.currentTimeMillis();

        for(int i=0;i<10000;i++) {
            // one.append(i);
            one +=i;
        }

        long endTime = System.currentTimeMillis();
        // System.out.println(one.toString());
        System.out.println("Time:"+(endTime-startTime));

    }
}

C:\Users\PiLiPaLa\Desktop\J_Code\Eleven>java StringTest
Time:126

我们使用的时间是126毫秒。

进行了很多次测试,都是在120毫秒左右。

我们使用StringBuilder类进行测试。

public class StringTest {
    public static void main(String[] args) {

        // String one = "";
        StringBuilder one = new StringBuilder("");

        long startTime = System.currentTimeMillis();

        for(int i=0;i<10000;i++) {
            one.append(i);
            // one +=i;
        }

        long endTime = System.currentTimeMillis();
        // System.out.println(one.toString());
        System.out.println("Time:"+(endTime-startTime));

    }
}

C:\Users\PiLiPaLa\Desktop\J_Code\Eleven>java StringTest
Time:16

时间大约在16毫秒,速度快了非常多,实际上对内存的消耗也是非常少。

StringBuffer类是StringBuilder类的一个线程安全的版本,在需要多线程访问时,我们必须使用StringBuffer类。