String s=new String("xyz")究竟创建了几个String Object? 2个?哪2个?答对有奖
11个回答
展开全部
是2个不假。
一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是"xyz",我只能这么说了。还有的,s确实只是一个引用,本身不是对象。java不是纯粹的面向对象,也就是说并不是所有的都是对象,如基本类型等,没清楚的再问我吧
一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是"xyz",我只能这么说了。还有的,s确实只是一个引用,本身不是对象。java不是纯粹的面向对象,也就是说并不是所有的都是对象,如基本类型等,没清楚的再问我吧
更多追问追答
追问
哈 我认同这位大侠的。。。。。。若果编译期间常量池已经有“xyz”对象的话,那么这个就可能创建一个对象吧。。。是不是?
追答
常量池中只可能只有一个“xyz”,但是堆中可能有多个,因为你这里用了new String来强制在堆中再创建了一个对象,所以是两个哈;如果是String s= "xyz"这样的,s这个引用就会直接指向常量池的"xyz",而不会是指向你在堆中创建的“xyz”。
展开全部
两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它依据那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。如果以前没用过则新创建一个”xyz”。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
String s=new String("xyz")究竟创建String Object分为两种情况:
1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")。
1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
正确答案是1个或2个,
如果实现常量池中已经有了“xyz" 那么只会创建一个s的引用对象,来引用常量池中的对象,
如果事先常量池里没有'xyz" 那么会创建两个对象,一个是引用对象s 一个是常量池中的“xyz“。
如果实现常量池中已经有了“xyz" 那么只会创建一个s的引用对象,来引用常量池中的对象,
如果事先常量池里没有'xyz" 那么会创建两个对象,一个是引用对象s 一个是常量池中的“xyz“。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
2个
“xyz”一个
new String() 一个
s不是,只是引用
“xyz”一个
new String() 一个
s不是,只是引用
更多追问追答
追问
哈 这位仁兄快接近答案了,说详细点
追答
??难道不是2个??
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询