黑马程序员技术交流社区

标题: 已解决。面试问题,String创建几个对象的问题。这问题始..... [打印本页]

作者: 王舜民    时间: 2012-8-22 07:04
标题: 已解决。面试问题,String创建几个对象的问题。这问题始.....
本帖最后由 王舜民 于 2012-8-23 06:11 编辑

String s = new String("xyz");创建几个对象的问题。
网上答案众说纷纭,又有的互相矛盾,比如说xx宝典,看完更晕了。
有谁能给我讲一下呢?所谓答案是:两个(一个是“xyz”,一个是指向“xyz”的引用对象s)
感觉就是生搬硬套的。如果面试问道就不懂了,只会强行记着这个答案

感觉还是二楼哥们比较靠谱
作者: 宋启龙    时间: 2012-8-22 07:37
我也不是很懂  在网上看了一个帖子   希望对楼主有所帮助  这个问题没有标准答案的   http://rednaxelafx.iteye.com/blog/774673
作者: 赵俊杰    时间: 2012-8-22 07:57
本帖最后由 赵俊杰 于 2012-8-22 08:14 编辑

个人感觉,是两个:
String s="XYZ",创建了一个对象。
String s=new String("XYZ"),创建了两个对象;


作者: 黑马振鹏    时间: 2012-8-22 08:05
最好的办法就是看老毕的视频,老师讲过这个例子。多看两遍就理解了
作者: 黑马_许芸    时间: 2012-8-22 08:11
java中有个Spring Pool。就是所谓的字符串池。

创建字符串对象时,如果使用 String str = "hello"; 这种方式创建。程序就会先去Spring Pool中寻找有没有“hello”这个字符串,如果有就将str指向Spring Pool中的“hello”这个字符串。如果没有,程序就会先在Spring Pool中创建hello这个字符串,然后再将str指向它。

如果使用 String str = new String("hello"); 这种方式创建字符串对象。程序会在堆中创建一个字符串对象hello,然后将str指向堆中的这个字符串对象。在这之后,程序会在Spring Pool中寻找有没有hello这个字符串,如果没有就创建一个,如果有,就什么都不做。
作者: 李炜    时间: 2012-8-22 10:13
楼上说得很好,学习了
作者: 李炜    时间: 2012-8-22 10:43
http://zhidao.baidu.com/question/271760127.html刚刚在查其他资料时碰巧看到相关的解答,楼主可以参考下
作者: 黑马_许芸    时间: 2012-8-22 11:46
额,居然把单词写错了。{:soso_e127:},{:soso_e117:}{:soso_e106:}。是String Pool
作者: 王舜民    时间: 2012-8-22 21:42
黑马_许芸 发表于 2012-8-22 08:11
java中有个Spring Pool。就是所谓的字符串池。

创建字符串对象时,如果使用 String str = "hello"; 这种方 ...

谢谢美女!
作者: 王舜民    时间: 2012-8-22 21:43
黑马振鹏 发表于 2012-8-22 08:05
最好的办法就是看老毕的视频,老师讲过这个例子。多看两遍就理解了

请问在哪边的。。。
作者: 黑马振鹏    时间: 2012-8-24 08:02
王舜民 发表于 2012-8-22 21:43
请问在哪边的。。。

13天 第一个视频




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