黑马程序员技术交流社区

标题: 关于StringBuffer的问题 [打印本页]

作者: 孙新强    时间: 2012-7-10 17:19
标题: 关于StringBuffer的问题
public class ExzampleStringBuffere {

        public static void main(String[] args) {
                // TODO Auto-generated method stub
        StringBuffer buf=new StringBuffer("TEST");
        System.out.println(buf);
        System.out.println(buf.length());
        }
}
在这个程序里面打印buf的长度结果是4 这个我知道  StringBuffer在内存中是动态分配空间的 那么加载StringBuffer时内存中具体是怎么处理的?
作者: 陆强强    时间: 2012-7-10 17:26
这里的长度是按字符算的,一个字符就是一个长度,和集合不一样
所有容器底层都是可变数组
作者: 游兴钟    时间: 2012-7-10 17:40
StringBuffer内部封装了数组,只要字符串缓冲区所存的长度超出数组长度,就会自动增加数组长度,并把原值加进新的数组.
作者: 徐然    时间: 2012-7-10 19:20
StringBuffer对象包含一个称为缓冲区的内存块,这里可能包含了一个字符串,
也可能没包含,如果包含了字符串
则这个字符串也不一定会占用全部的缓冲区.
因此一个字符串的长度可能与缓冲区的长度不同,缓冲区的长度是StringBuffer的容量.
当你用一个已有的字符串"TEST"生成一个StringBuffer时,其容量是字符串的长度加16.
StringBuffer的容量是不固定的,你可以在创建一个StringBuffer时为其指定容量,如:
StringBuffer buf = new StringBuffer(50);
如果你不指定,那么他默认的容量就是16个字符
作者: 徐然    时间: 2012-7-10 19:23
并且你需要使用的容量是系统自动提供的,它会根据需要再必要的时候予以增大




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2