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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 徐宏伟 中级黑马   /  2012-9-5 19:33  /  2635 人查看  /  15 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

在学习的时候,只要是涉及到new,就会创建一个对象;

例如: String  str = new String(“lll”);//这样就创建一个string类型的对象;每new一次,string类型的对象就增加一个;

那么 string str1 = “123”; string str2 = ”123“;  string str3 = ”123“;  //请问这样的话是创建了几个对象?(备注:字符串都是”123“是一样的)

评分

参与人数 1技术分 +1 收起 理由
郑文 + 1

查看全部评分

15 个回复

倒序浏览
王海舟 发表于 2012-9-5 21:04
先直接给出答案:
共创建了3个对象。

谢谢!!!
回复 使用道具 举报
廖创发 发表于 2012-9-5 21:55
创建了3个对象。因为每次实例化的时候都会在堆栈中分配一个空间储存,所以虽然字符串一样,但str1,str2,s ...

谢谢!!!
回复 使用道具 举报
阿磊-_- 发表于 2012-9-6 20:57
不对吧 。。字符串如果相同,变量名都指向同一个对象。应该只有一个对象! 如果你特意new 一个的话是又一个 ...

我觉得net该有这么一个优化……new的时候会增加,但是直接那么赋值的话,觉得该是一个,但是没有理论依据…………目前还没找到这方面的说明。

//======前提:都是同一个字符串;
回复 使用道具 举报
王海舟 发表于 2012-9-5 21:04
先直接给出答案:
共创建了3个对象。

哥们,关于 "托管堆"  和 “堆栈” 的区别,或者说有木有相关的资料,推荐下哈~~~谢了先
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马