学习电脑 发表于 2017-2-18 21:30:53

capacity


0
收藏(0)
public class Example9_11{
        public static void main(String[] args) {
                StringBuffer str = new StringBuffer();
                str.append("大家好");
                System.out.println("str:"+str);
                System.out.println("length:"+str.length());
                System.out.println("capacity:"+str.capacity());
                str.append("大家好我们大家都很喜欢学习java语言");
                System.out.println("str:"+str);
                System.out.println("length:"+str.length());
                System.out.println("capacity:"+str.capacity());
                StringBuffer sb = new StringBuffer("Hello");
                System.out.println("str:"+sb);
                System.out.println("length:"+sb.length());
                System.out.println("capacity:"+sb.capacity());
        }
}
str:大家好
length:3
capacity:16
str:大家好大家好我们大家都很喜欢学习java语言
length:22
capacity:34
问题,这里的capacity为什么是34?

零度非安全 发表于 2017-2-19 20:30:01

StringBuffer 在内部维护一个字符数组,当你使用缺省的构造函数来创建 StringBuffer 对象的时候

StringBuffer 的容量被初始化为 16 个字符,也就是说缺省容量就是 16 个字符。当 StringBuffer

达到最大容量的时候,它会将自身容量增加到当前的 2 倍再加 2,也就是 2 * 旧值 + 2。

学习电脑 发表于 2017-2-19 21:29:59

零度非安全 发表于 2017-2-19 20:30
StringBuffer 在内部维护一个字符数组,当你使用缺省的构造函数来创建 StringBuffer 对象的时候

StringB ...

增两倍为什么还要加2

零度非安全 发表于 2017-2-19 21:36:08

学习电脑 发表于 2017-2-19 21:29
增两倍为什么还要加2

你可以去看下该方法的定义

学习电脑 发表于 2017-2-19 22:09:50

零度非安全 发表于 2017-2-19 21:36
你可以去看下该方法的定义

怎么看,在哪里查

零度非安全 发表于 2017-2-19 23:40:28

学习电脑 发表于 2017-2-19 22:09
怎么看,在哪里查

可以在 Java 的开发环境看,比如 eclipse,也可以看 API 文档

学习电脑 发表于 2017-2-20 11:33:55

零度非安全 发表于 2017-2-19 23:40
可以在 Java 的开发环境看,比如 eclipse,也可以看 API 文档

谢谢

零度非安全 发表于 2017-2-20 13:26:06

学习电脑 发表于 2017-2-20 11:33
谢谢

如果您的【问题求助】得到满意的解答,请自行将分类修改为【已经解决】;如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】鼓励;善用【论坛搜索】功能,那里可能有您想要的答案!
页: [1]
查看完整版本: capacity