我想知道是否
String s = new String("blabla");
与
完全相同String s = "blabla";
我认为对于第一个这个String类的构造函数被调用:
public String(char value[]) {
this.value = Arrays.copyOf(value, value.length);
}
但不确定第二个是否相同。
换句话说,这是什么" blabla"从Java的角度来看?
所以使用String s = "blabla";
s
String
类的新立场是什么时候?如果是,它的哪个构造函数被调用?
答案 0 :(得分:0)
实际上你可能已经知道String
是一个不可变类,这意味着一旦它被初始化它就不能再被改变了,所以这就是为什么有两个创建字符串的原因。
String s = "blabla"
:此处创建此String并将其推送到字符串常量池(如果它尚不存在)。String s = new String("blabla")
:但是像这样,每次都会创建一个新的String,而不检查它是否已经存在于池中。注意:String s = new String("blabla").intern()
相当于String s = "blabla"
。