String VS StringBuffer

大家可能都知道了,对于字符串的链接操作StringBuffer的性能要比String好!但是,这是为什么呢?原因如下:

这是StringBuffer中的源代码:

public final class StringBuffer
    extends AbstractStringBuilder
    implements java.io.Serializable, CharSequence
{
跟踪到AbstractStringBuilder后的源码:

abstract class AbstractStringBuilder implements Appendable, CharSequence {
    /**
     * The value is used for character storage.
     */
    char value[];

再看看String中的源代码:

public final class String implements java.io.Serializable, Comparable<String>, CharSequence {
    /** The value is used for character storage. */
    private final char value[];

相信,到这里大家都看出原因了吧!对!就是因为value[]前面多了一个final的修饰,可以想象一下,这意味着什么?

对!意味着:每次对String数组做一次修改,都要重新申请内存(因为被final修饰的变量是不能被修改的),然后再将以前的内容拷贝到新申请的内存中去;但是StringBuffer则不用,他只有当数组不够用的时候,才回去重新申请内存!故:这就是在字符串连接的操作中StringBuffer表现比String出众的根本原因。






阅读更多
文章标签: string character class
个人分类: java
上一篇ThreadLocal如何解决并发安全性
下一篇QT Creator 代码自动补全
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭