黑马程序员技术交流社区
标题:
关于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