A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

string name="zhangsan" ,string  name=new string("zhangsan")"   ,stringBuffer sb=new stringBuffer();
三个各自内存存储问题?

评分

参与人数 1技术分 +1 收起 理由
xiaolong + 1 常见问题!

查看全部评分

1 个回复

倒序浏览
黑马网友  发表于 2011-7-22 11:22:59
沙发
string name="zhangsan"   是先在栈中创建一个对String类的对象引用变量 name,然后通过符号引用去字符串常量池 里找有没有"zhangsan",如果没有,则将"zhangsan"存放进字符串常量池 ,并令name指向”zhangsan”,如果已经有”zhangsan” 则直接令name指向“zhangsan”。

string  name=new string("zhangsan")"   是用new()来新建对象的,它会在存放于堆中。每调用一次就会创建一个新的对象。

stringBuffer sb=new stringBuffer();
StringBuffer所创建的空间在盛装字串时分配的空间并不是像String那样刚好与字串所占大小相同,而是在盛装字串大小的基础上还要追加16位的空间意味着StringBuffer所创建的空间可以向其中再次追加字串。

评分

参与人数 1技术分 +2 收起 理由
xiaolong + 2 还行!

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马