黑马程序员技术交流社区

标题: 关于字符串的一个小问题,求回答 [打印本页]

作者: 放课后小朋友    时间: 2014-1-15 21:02
标题: 关于字符串的一个小问题,求回答
String s=new String("kkk");这个过程中创建了几个对象?有人说是两个,有人说三个,两个的偏多,到底哪个?

作者: 不冬眠的蚂蚁    时间: 2014-1-15 21:12
两个
String s2=new String("abc");
堆中一个是new的结果,当然放在堆中“abc”, 常量池中一个是“abc” ,s2只是个引用 不是对象
首先在string池内找,找到?不在池内创建string对象,否则创建, 这样就一个string对象  
遇到new运算符号了,在内存(堆里)上创建string对象,并将其返回给s2,又一个对象

作者: 不冬眠的蚂蚁    时间: 2014-1-15 21:14
有人问过相同意思的问题
http://bbs.itheima.com/thread-105149-1-1.html
你可以去看看
作者: xingkong    时间: 2014-1-15 21:17
两个对象

参考:http://www.blogjava.net/mirenxiaoxiao/archive/2010/10/18/335457.html
作者: 黄晓鑫    时间: 2014-1-15 21:42
二个 一个是new 一个是""的内容
作者: 放课后小朋友    时间: 2014-1-15 21:52
不冬眠的蚂蚁 发表于 2014-1-15 21:12
两个
String s2=new String("abc");
堆中一个是new的结果,当然放在堆中“abc”, 常量池中一个是“abc” , ...

好的,谢谢了
作者: 放课后小朋友    时间: 2014-1-15 23:18
黄晓鑫 发表于 2014-1-15 21:42
二个 一个是new 一个是""的内容

嗯,谢谢回答
作者: mrwise1991    时间: 2014-1-16 10:52
首先,在java中,把双引号括起来的内容当成是字符串,所以,这里的“kkk”就是一个字符串,而字符串是对象,所以它本身就是一个对象,然后再new了一个字符串对象s,只不过是用字符串“kkk”来实例化的,所以,一共有两个对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2