关闭

String VS StringBuffer

490人阅读 评论(0) 收藏 举报

大家可能都知道了,对于字符串的链接操作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出众的根本原因。






0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:417232次
    • 积分:3964
    • 等级:
    • 排名:第7881名
    • 原创:29篇
    • 转载:139篇
    • 译文:0篇
    • 评论:54条
    文章分类
    最新评论