StringBuilder 和 StringBuffer 的区别

新手上路,请多包涵

StringBufferStringBuilder 之间的主要区别是什么?在决定其中任何一个时是否存在任何性能问题?

原文由 blacktiger 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 509
2 个回答

StringBuilderStringBuffer 快,因为它不是 synchronized

这是一个简单的基准测试:

 public class Main {
    public static void main(String[] args) {
        int N = 77777777;
        long t;

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

        {
            StringBuilder sb = new StringBuilder();
            t = System.currentTimeMillis();
            for (int i = N; i > 0 ; i--) {
                sb.append("");
            }
            System.out.println(System.currentTimeMillis() - t);
        }
    }
}

A test run gives the numbers of 2241 ms for StringBuffer vs 753 ms for StringBuilder .

原文由 polygenelubricants 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题