日期:2014-05-20  浏览次数:20660 次

SrtingBuffer和String
当StringBuffer和String都使用new的时候 是怎么能一回事? 栈、堆和常量区在那里分别得作用? 怎么存储的?

------解决方案--------------------
StringBuffer是字符串缓冲区,其中封装了String数组来存储添加进的字符信息
而String只是一个字符串,前者共能更强大点,
当我们StringBuffer sb=new StringBuffer();时,sb引用存在于栈内存中而
new StringBuffer对象存在于堆内存中;
而我们 String str=new String("字符串");时内存情况情况跟前者差不多,
只是前者内部使用了(或者说封装了)String数组;

------解决方案--------------------
如果前面已经有String str = “字符串” ;
那么此时当然常量池中就有一个"字符串"的这个值 如果前面没有 用new的时候当然没存这个值了 
所以现在王里面加 那么此时就是两个
如果有就是一个 
常量区不止存有String类型的 其他常量也存着 只是在不同的区 
如果不好理解堆和栈的话 就把堆看着存变量名 栈存地址
这样考虑其关系起来应该就好理解多了