String s=new String("xyz")究竟创建了几个String Object? 2个?哪2个?答对有奖

大家说清楚点哈,我来终结下这个问题。。。集思广益哈,求说出这个创建的详细过程... 大家说清楚点 哈 ,我来终结下这个问题。。。集思广益哈,求说出这个创建的详细过程 展开
 我来答
main_inf
2011-07-08 · TA获得超过1575个赞
知道小有建树答主
回答量:811
采纳率:100%
帮助的人:530万
展开全部
是2个不假。
一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是"xyz",我只能这么说了。还有的,s确实只是一个引用,本身不是对象。java不是纯粹的面向对象,也就是说并不是所有的都是对象,如基本类型等,没清楚的再问我吧
更多追问追答
追问
哈 我认同这位大侠的。。。。。。若果编译期间常量池已经有“xyz”对象的话,那么这个就可能创建一个对象吧。。。是不是?
追答
常量池中只可能只有一个“xyz”,但是堆中可能有多个,因为你这里用了new String来强制在堆中再创建了一个对象,所以是两个哈;如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz”。
百度网友9d7de69
2012-12-30
知道答主
回答量:16
采纳率:0%
帮助的人:4.3万
展开全部
两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它依据那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。如果以前没用过则新创建一个”xyz”。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
大雁南飞
推荐于2017-09-30 · 知道合伙人互联网行家
大雁南飞
知道合伙人互联网行家
采纳数:1660 获赞数:26106
编码爱好者

向TA提问 私信TA
展开全部
String s=new String("xyz")究竟创建String Object分为两种情况:
1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
王二宝521
2012-07-30
知道答主
回答量:6
采纳率:0%
帮助的人:9353
展开全部
正确答案是1个或2个,
如果实现常量池中已经有了“xyz" 那么只会创建一个s的引用对象,来引用常量池中的对象,
如果事先常量池里没有'xyz" 那么会创建两个对象,一个是引用对象s 一个是常量池中的“xyz“。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hanwt139
2011-07-08 · TA获得超过843个赞
知道小有建树答主
回答量:1144
采纳率:100%
帮助的人:693万
展开全部
2个
“xyz”一个
new String() 一个
s不是,只是引用
更多追问追答
追问
哈 这位仁兄快接近答案了,说详细点
追答
??难道不是2个??
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(9)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式