我已阅读文档,但有些人说它创建了两个对象,有些人说它只创建了一个对象。
在采访中,这些事情经常被问到,我不知道该说什么,并解释我是如何得到答案的。
当我们只写这个语句时,会创建多少String
个对象?
public class Test123 {
String st = new String();
}
答案 0 :(得分:5)
使用
创建String对象时String s = new String(“xyz”) it will create two objects.
答案 1 :(得分:4)
零。仅在创建st
的实例时才会分配Test123
,并且不执行任何操作。
答案 2 :(得分:1)
它与字符串文字无关。 对new
的每次调用都会在堆上创建一个新对象。
当您执行以下操作时:
String st = "something";
字符串“something”在String-pool中查找,如果它不存在 - 它将被添加到池中,并将返回对它的引用。如果它已经存在 - 将返回对它的引用。
这与new
关键字无关,并且没有任何方案,您可以使用单个new
命令创建两个字符串。
答案 3 :(得分:0)
new
操作仅创建一个对象。
但它的参数是String
,它已代表object
。因此,只要您使用String
,就会隐式创建object
。