cxzucc 2009-09-30 16:26
浏览 507
已采纳

请问一共创建了多少个对象?(与StringBuffer有关)

StringBuffer sb = new StringBuffer("abc");
sb.append("567");
sb.append("abc");
请问一共创建了多少个对象?

我感觉是2个,当StringBuffer以new StringBuffer(String str)这种方式创建时,会先调用父类AbstractStringBuilder的构造方法,这里会生成一个char[],然后还有一个对象就是StringBuffer本身。

  • 写回答

13条回答 默认 最新

  • iteye_20670 2009-09-30 16:26
    关注

    [code]
    public AbstractStringBuilder append(String str) {
    if (str == null) str = "null";
    int len = str.length();
    if (len == 0) return this;
    int newCount = count + len;
    if (newCount > value.length)
    expandCapacity(newCount);
    str.getChars(0, len, value, count);//把str 复制 value 中
    count = newCount;
    return this;
    }

    public StringBuffer() {
    super(16);
    }
    //下面是 stringBuffer 的super
    AbstractStringBuilder(int capacity) {
    value = new char[capacity];//初始容量为16
    }
    [/code]
    StringBuffer 、"abc"、"567"、char[] 四个。。我猜测是这样的。。
    不过虚拟机里面可能有别的机制,源代码上我看大概是4个

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(12条)

报告相同问题?

悬赏问题

  • ¥50 易语言把MYSQL数据库中的数据添加至组合框
  • ¥20 求数据集和代码#有偿答复
  • ¥15 关于下拉菜单选项关联的问题
  • ¥20 java-OJ-健康体检
  • ¥15 rs485的上拉下拉,不会对a-b<-200mv有影响吗,就是接受时,对判断逻辑0有影响吗
  • ¥15 使用phpstudy在云服务器上搭建个人网站
  • ¥15 应该如何判断含间隙的曲柄摇杆机构,轴与轴承是否发生了碰撞?
  • ¥15 vue3+express部署到nginx
  • ¥20 搭建pt1000三线制高精度测温电路
  • ¥15 使用Jdk8自带的算法,和Jdk11自带的加密结果会一样吗,不一样的话有什么解决方案,Jdk不能升级的情况