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

2025-04-18 07:14:34
推荐回答(3个)
回答1:

是2个不假。
一个是编译时决定的,最后放在常量池中。一个是运行时放在堆里面的。两个都是"xyz",我只能这么说了。还有的,s确实只是一个引用,本身不是对象。java不是纯粹的面向对象,也就是说并不是所有的都是对象,如基本类型等,没清楚的再问我吧

回答2:

两个或一个,”xyz”对应一个对象,这个对象放在字符串常量缓冲区,常量”xyz”不管出现多少遍,都是缓冲区中的那一个。New String每写一遍,就创建一个新的对象,它依据那个常量”xyz”对象的内容来创建出一个新String对象。如果以前就用过’xyz’,这句代表就不会创建”xyz”自己了,直接从缓冲区拿。如果以前没用过则新创建一个”xyz”。

回答3:

String s=new String("xyz")究竟创建String Object分为两种情况:
1.如果String常理池中,已经创建"xyz",则不会继续创建,此时只创建了一个对象new String("xyz");
2.如果String常理池中,没有创建"xyz",则会创建两个对象,一个对象的值是"xyz",一个对象new String("xyz")。