面试-Java基础-StringBuffer与StringBuilder的区别

Java 提供了三种表达字符串的类,分别是StringStringBufferStringBuilderString类被final修饰,是不可被继承或被重写的,为什么String被定义为不可变(immutable),请前往我的博客为什么String定义为final?;StringBufferStringBuilder是可变的(mutable)。

StringBufferStringBuilder区别表
no StringBuffer StringBuilder
1(主要区别) 线程安全。方法大多都被synchronized修饰,意味着两个线程不能同时调用StringBuffer方法。 线程不安全。意味着俩个线程可以同时调用StringBuilder方法。
2 锁消耗时间,任务执行低效 单线程高效
3 StringBuffer类首次出现在JDK 1.0 StringBuilder类首次出现在JDK 1.5
dibala,上才艺
public static void main(String[] args) {
        int n = 77777777;
        long t;

        {
            StringBuffer sb = new StringBuffer();
            t = System.currentTimeMillis();
            for (int i = 0; i < n; i++) {
                sb.append("");
            }
            System.out.println(System.currentTimeMillis() - t);
        }

        {
            StringBuilder stringBuilder = new StringBuilder();
            t = System.currentTimeMillis();
            for (int i = 0; i < n; i++) {
                stringBuilder.append("");
            }
            System.out.println(System.currentTimeMillis() - t);
        }

    }

结果输出

StringBuffer use 3644 seconds
StringBuilder use 262 seconds
Process finished with exit code 0

你可能感兴趣的:(#,1.,Java)