我是stackoverflow的新手,我发现它非常有用,非常感谢一个伟大的社区。虽然我一直在了解java中的字符串,但我只是想知道如何创建字符串文字来源?我在java中理解了Strings的大部分概念。它是一种特殊的类是final,我也理解在创建String文字时,会在堆上创建一个对象,它的引用将在字符串常量池中。通过使用它。
String name = "Manchester";
我也明白,当使用new运算符创建字符串时,引用将在堆上具有对象,并在字符串常量池中引用。通过这种方式。
String name = new String("United");
我确实理解了如何使用new运算符在堆上创建对象,我不明白的是当我们使用双引号时对象是如何在堆上创建的#34; &#34 ;.这是如何完成的?我也考虑过String.class的源代码,但它对我没有任何帮助。
任何人都可以让我知道这是如何工作的?感谢。
答案 0 :(得分:1)
String name = "Manchester";
将在字符串的常量池(在堆中)中搜索相同的值对象,如果找到将使用它,否则将执行此操作:
String name = new String("Manchester");
请注意String是不可变的,因此它尝试使用已存在的对象rater而不是创建它。
您可以这样检查:
String x = "a";
String y = "a";
x==y //true
和
String x = new String("a");
String y = new String("a");
x==y //false