我正在研究Java中的字符串,谁能告诉我我们是否写
String s = "deepak";
这会否在字符串常量池中创建对象,因为我们在这里没有使用new
关键字,所以根据我的说法不会创建对象?
答案 0 :(得分:2)
String s = "deepak";
将尝试重用字符串。如果它已经存在于字符串池中,则将使用该对象。如果它不存在,则显然会创建一个新对象。
String s = new String("deepak");
将始终创建一个不会添加到字符串池的新字符串。
一个简单的测试来确认它(提醒:==
比较对象引用):
public static void main(String args[]) {
String a = new String("test");
String b = new String("test");
String c = "test";
String d = "test";
System.out.println(a == b);
System.out.println(b == c);
System.out.println(c == d);
}
输出:
false
false
true
如果您想了解更多有关此机制的信息,则称为String Interning。