不使用new关键字创建字符串对象

时间:2020-07-21 07:03:02

标签: java string

我正在研究Java中的字符串,谁能告诉我我们是否写

String s = "deepak";

这会否在字符串常量池中创建对象,因为我们在这里没有使用new关键字,所以根据我的说法不会创建对象?

1 个答案:

答案 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。

相关问题