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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 汪叶庭 中级黑马   /  2013-1-12 09:46  /  2201 人查看  /  9 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

String s = new String("xyz");创建了几个String Object?   
为什么答案是2个,不应该是1个么?
我是菜鸟,求大神们不吝赐教。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 神马都是浮云

查看全部评分

9 个回复

倒序浏览
String s="xyz";这是创建了一个。而String s=new String(“xyz”);时,右面的new是创建了一个,然后左面的String s是又创建了一个s,指向“xyz”这个对象,所以是两个。

评分

参与人数 1技术分 +1 收起 理由
Rancho_Gump + 1 赞一个!

查看全部评分

回复 使用道具 举报
明白了 谢谢
回复 使用道具 举报
陈丽莉 发表于 2013-1-12 09:59
String s="xyz";这是创建了一个。而String s=new String(“xyz”);时,右面的new是创建了一个,然后左面 ...

这女生挺厉害的
回复 使用道具 举报
陈丽莉 发表于 2013-1-12 09:59
String s="xyz";这是创建了一个。而String s=new String(“xyz”);时,右面的new是创建了一个,然后左面 ...

应该不是这个解释,  是new一个对象   还有个原因是用到了字符串池, 在字符串池里出现了”abc “这个对象
回复 使用道具 举报
惠晖 发表于 2013-1-12 12:59
应该不是这个解释,  是new一个对象   还有个原因是用到了字符串池, 在字符串池里出现了”abc “这个对 ...

不要上来就否定别人的答案嘛~
是出现了“xyz”这个对象,然后s指向了它啊。
1、你的abc是别的题里面的。。。  根本没好好看题  - -||
2、你也没好好看我的回答就否定。。。  {:3_49:}
回复 使用道具 举报
堆中创建一个对象
常量池一个堆对象引用常量池中的值
回复 使用道具 举报
惠晖 中级黑马 2013-1-12 13:49:18
8#
陈丽莉 发表于 2013-1-12 13:09
不要上来就否定别人的答案嘛~
是出现了“xyz”这个对象,然后s指向了它啊。
1、你的abc是别的题里面的。 ...

I'm sorry{:3_65:}
回复 使用道具 举报
本帖最后由 张云杰 于 2013-1-12 16:11 编辑

解释应该是这样的, String s = new String("xyz");  原先的String s 会在堆区里存在,  new 的时候 又会申请一个内存区域 存放在你的堆区里, 然后 "xyz" 这个值在栈区里  ,  当你的s 指向新的对象的时候,  编译器会自动去寻找 与它所对应的值和类型,   所以s 指向 String("xyz"), 答案应该是2个
回复 使用道具 举报
new 是创建对象的,只要new 了一下,就代表创建一个对象。另外,字符串也是一个对象。所以有二个对象。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马