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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

String s=new String("kkk");这个过程中创建了几个对象?有人说是两个,有人说三个,两个的偏多,到底哪个?

评分

参与人数 1黑马币 +2 收起 理由
黄晓鑫 + 2

查看全部评分

7 个回复

倒序浏览
两个
String s2=new String("abc");
堆中一个是new的结果,当然放在堆中“abc”, 常量池中一个是“abc” ,s2只是个引用 不是对象
首先在string池内找,找到?不在池内创建string对象,否则创建, 这样就一个string对象  
遇到new运算符号了,在内存(堆里)上创建string对象,并将其返回给s2,又一个对象
回复 使用道具 举报
有人问过相同意思的问题
http://bbs.itheima.com/thread-105149-1-1.html
你可以去看看
回复 使用道具 举报
两个对象

参考:http://www.blogjava.net/mirenxiaoxiao/archive/2010/10/18/335457.html
回复 使用道具 举报
二个 一个是new 一个是""的内容
回复 使用道具 举报
不冬眠的蚂蚁 发表于 2014-1-15 21:12
两个
String s2=new String("abc");
堆中一个是new的结果,当然放在堆中“abc”, 常量池中一个是“abc” , ...

好的,谢谢了
回复 使用道具 举报
黄晓鑫 发表于 2014-1-15 21:42
二个 一个是new 一个是""的内容

嗯,谢谢回答
回复 使用道具 举报
首先,在java中,把双引号括起来的内容当成是字符串,所以,这里的“kkk”就是一个字符串,而字符串是对象,所以它本身就是一个对象,然后再new了一个字符串对象s,只不过是用字符串“kkk”来实例化的,所以,一共有两个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马