【发布时间】:2016-04-21 07:36:35
【问题描述】:
我是 stackoverflow 的新手,我发现它非常有用,非常感谢一个伟大的社区。虽然我一直在了解 Java 中的字符串,但我只是想知道字符串字面量源是如何创建的?我理解了java中字符串的大部分概念。它是一种特殊的类,是最终的,我也理解在创建字符串字面量时,将在堆上创建一个对象,其引用将在字符串常量池中。通过使用它。
String name = "Manchester";
我还了解到,当使用 new 运算符创建字符串时,引用将具有堆上的对象和字符串常量池中的引用。就这样吧。
String name = new String("United");
虽然我确实了解了如何使用 new 运算符在堆上创建对象,但我不明白的是当我们使用双引号“”时如何在堆上创建对象。这是如何实现的?我也去想了 String.class 的源代码,但对我没有任何帮助。
谁能告诉我这是如何工作的?谢谢。
【问题讨论】:
-
您无需担心。编译器会处理它。
-
它是最接近java中运算符重载的东西,我认为它在编译时已更改为新字符串
-
@Bálint 不会,否则所有具有相同值的文字将是不同的实例。
-
@Kayaman 感谢您的回复。所以假设我正在创建一个新类,并且我想要类似 String 的功能,因为编译器处理了我无能为力的文字?我想说的是这个
<MyClass> className = "Manchester United"; -
This answer 关于这个问题是 Kayaman 所说的,有更多解释。