StringBuilder和StringBuffer有哪些区别呢

最主要的区别,StringBuffer的实现用了synchronized(锁),而StringBuilder没有。

因此,StringBuilder会比StringBuffer快。

如果你 - 非常非常追求性能(其实这两个都不慢,比直接操作String,要快非常多了) - 不需要考虑线程安全问题, - JRE是1.5+

可以用StringBuilder,反之,请用StringBuffer。

性能测试例子:

如下这个例子,使用StringBuffer,耗时2241ms,而StringBuilder是753ms

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 ;) {
                sb.append("");
            }
            System.out.println(System.currentTimeMillis() - t);
        }
    }
}

stackoverflow讨论原址 http://stackoverflow.com/questions/355089/stringbuilder-and-stringbuffer

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 IT工具网 java


相关文章:

java如何创建单例

java如何计算MD5值

java - NumberFormatException是否为有效数字?

java - Play 2.2 Java-一个控制器可以调用另一个控制器吗?

java - 如何使用Jersey计算多部分请求正文的MD5哈希

为Eclipse自动代码格式化设置行的最大长度?

iptables命令之禁ping和ddos向外发包

一些JavaScript的编码习惯和奇怪写法

java - 使用JDBC将String作为datetime2(0)插入SQL Server 2012会导致错误

java - 引用的文件包含错误(http://java.sun.com/xml/ns/javaee/web-app.xsd)