`

从源码的角度分析为啥执行速度是 StringBuilder > StringBuffer > String

阅读更多
在 Java 中字符串的执行速度是 StringBuilder > StringBuffer > String 了?

我们先说下 StringBuilder 和 StringBuffer 这两个类. 首先这两个类都是继承的 AbstractStringBuilder.


我们可以看到 AbstractStringBuilder 中使用 char[] 数组来存储字符. 换句话说,AbstractStringBuilder 相当于一个 ArrayList,不过的是 AbstractStringBuilder 只存储字符. 这和 String 的区别是,当一个字符串被频繁的修改的时候,AbstractStringBuilder 不需要频繁的创建对象,然后销毁老的对象,而 String 需要. 这也就是为啥 StringBuilder 和 StringBuffer 的执行速度比 String 块了.

然后说下 StringBuilder 和 StringBuffer.

StringBuffer 是线程安全类,它的方法上锁了,上锁和释放锁都需要开销,而 StringBuilder 是线程不安全的,它不需要这些额外的开销,所有 StringBuilder 的执行速度快于 StringBuffer.
1
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics