Java程序员面试题 1.String s = new String(“xyz”); 创建了几个String Object ?

2024-12-30 01:10:57
推荐回答(4个)
回答1:

通常版
创建2个String 对象, 都为 "xyz".

严禁版
要看 外部条件, 在标准SUN JVM里, 如果在此代码之前的代码中有"xyz"的声明 那么只会创建 一个String 对象 即通过new 关键字创建出来的. 在括号内的"xyz" 会使用JVM 之前创建的对象.

回答2:

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

回答3:

正确答案是1个或2个,
如果实现常量池中已经有了“xyz" 那么只会创建一个s的引用对象,来引用常量池中的对象,
如果事先常量池里没有'xyz" 那么会创建两个对象,一个是引用对象s 一个是常量池中的“xyz“。

回答4:

创建了一个呀