黑马程序员技术交流社区

标题: 找一个经典的基础题分享给你们 [打印本页]

作者: 79819275    时间: 2014-11-5 14:09
标题: 找一个经典的基础题分享给你们
本帖最后由 79819275 于 2014-11-8 23:31 编辑

String s = new String("abc") + new String("abc")到底创建几个对象,并说明原因。
答案回复可见,童鞋们先自己思考吧大神请绕道,:victory:




作者: striker    时间: 2014-11-5 15:50
比较有深度
作者: striker    时间: 2014-11-5 15:52
比较有深度
作者: zhappy    时间: 2014-11-5 18:57
5个。最近论坛很安静呀。
作者: qq8921310    时间: 2014-11-5 23:06
看一下
跟我想的一样不

作者: dong53821713    时间: 2014-11-6 00:01
四个四个四个
作者: 张周飞    时间: 2014-11-6 09:16
本帖最后由 张周飞 于 2014-11-6 09:19 编辑

xue xi  le
作者: 叼哥    时间: 2014-11-6 10:49
我猜是2个
作者: YanLH    时间: 2014-11-6 12:33
学习一下
作者: ll_shitou    时间: 2014-11-6 14:33
3个吧   
作者: 79819275    时间: 2014-11-6 22:49
各位都做对么
作者: M_______r    时间: 2014-11-7 09:29
难道不是3个么???
作者: M_______r    时间: 2014-11-7 09:30
晕没清楚题。。。一看就想到老师讲的,原来中间有个+
作者: 79819275    时间: 2014-11-7 10:03
M_______r 发表于 2014-11-7 09:30
晕没清楚题。。。一看就想到老师讲的,原来中间有个+

看清楚题嘛
作者: 79819275    时间: 2014-11-7 10:04
叼哥 发表于 2014-11-6 10:49
我猜是2个

这都能猜对。
作者: 。面具小丑    时间: 2014-11-7 12:09
应该是两个吧。
作者: 。面具小丑    时间: 2014-11-7 12:11
好吧,错了 受教了:)
作者: 陈永赛    时间: 2014-11-7 12:58
应该是5个吧····
作者: 付博    时间: 2014-11-7 13:05
看看。。
作者: 李国荧    时间: 2014-11-7 17:20
学习一下……
作者: yueyazhishang    时间: 2014-11-7 17:36
好像挺火,拿来看看
作者: newLife    时间: 2014-11-7 17:55
看看呀:)
作者: xiaochongbojue    时间: 2014-11-7 18:00
看看,挺有意思的
作者: newLife    时间: 2014-11-7 18:06
我想问一下 ,最后组合的字符串是怎么进入字符串常量池的?还有构造函数里传入的“abc"这个,常量池里的内容不是在编译时期就存在的吗?这里的new String();在编译期间并不会被执行啊,还是说在运行时期,JVM自动加载进了常量池里,加载进常量池不需要调用String intern()这个方法吗?求解
作者: 刘峻池    时间: 2014-11-7 20:08
1个 是不是~
作者: 刘峻池    时间: 2014-11-7 20:10
好吧   String池 忘了 - -
作者: 79819275    时间: 2014-11-7 20:43
newLife 发表于 2014-11-7 18:06
我想问一下 ,最后组合的字符串是怎么进入字符串常量池的?还有构造函数里传入的“abc"这个,常量池里的内 ...

最后的组合字符串 确实不能进入 常量池,这个是我的错误,

但是对于后面的new String("abc")进入线程池的问题,你想想是不是在new 之前 就已经先把"abc" 放入了常量池,只是这里它没得引用罢了
相当于是
String a = "abc";
String b = new String(a);

作者: Dr.Sparta    时间: 2014-11-7 21:53
回复看答案
作者: 爱吃小土豆    时间: 2014-11-7 22:14
看看......
作者: 爱吃小土豆    时间: 2014-11-7 22:17
看看......
作者: Evred    时间: 2014-11-8 22:31
学习学习
作者: 陈琪    时间: 2014-11-8 22:37
xxxxxxxxxxx
作者: 陈琪    时间: 2014-11-8 22:38
哈哈哈 好东西
作者: new999    时间: 2014-11-9 10:21
堆栈中有3个,常量池中2个
作者: new999    时间: 2014-11-9 10:40
本帖最后由 new999 于 2014-11-9 11:11 编辑

纠正了一个我的错误:运行时,"+出来的String不会被放进常量池。那么结果应该是堆内存中3个,常量池中1个。
作者: 高志鹏1    时间: 2014-11-10 12:03
3个。。。。
作者: 吕静然    时间: 2014-11-10 18:15
我觉得是4个对象,new出来2个,然后字符串池里有一个,然后两个字符串相加,又一个!,我是初学者,希望大家互相交流,一起进步!
作者: javaAndroid    时间: 2014-11-10 19:11
让我瞅瞅答案
作者: win_top1    时间: 2014-11-10 22:58
String s = new String("abc") + new String("abc");创建了4个对象,字符串池中2个,堆中2个
作者: VicenteZ    时间: 2014-11-11 00:19
学习一下
作者: sugar    时间: 2014-11-11 19:34
感觉是1个
作者: play1369    时间: 2014-11-13 11:04
多些分享
作者: newLife    时间: 2014-11-13 12:26
你能解释下第一步是在哪个时期进行的吗?是编译时期还是运行时期?听你的意思像在编译时期,又像在运行时期,还有最后一步abcabc这个对象是否会进入池呢
作者: 十万一千    时间: 2014-11-13 15:54
4个吗。。。。。。
作者: siasgarth    时间: 2014-11-14 02:31
think about it!
作者: sergio    时间: 2014-11-14 17:32
看看结果
作者: 不可一世    时间: 2014-11-14 22:31
四个对象~
作者: MeryStyle    时间: 2014-11-16 20:14
有卖关子~!
作者: MeryStyle    时间: 2014-11-16 20:18
有两个。。。
作者: W_D    时间: 2014-11-16 21:57
学习一下
作者: Franklin    时间: 2014-11-16 22:28
有意思的题目
作者: Raymond1011    时间: 2014-11-16 23:23
shen ti a ,bixuhuifu




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