【发布时间】:2020-03-16 12:31:54
【问题描述】:
我在翻Java String源代码,找到了一个CTOR,我有一些疑问:
public String(String original) {
this.value = original.value;
this.hash = original.hash;
}
我知道 Original 充当文字 String(带双引号),但无法理解 java/jvm 如何将 original.value 计算为 char 数组。这里的“价值”是什么?如果值为char数组那么.value函数/字段是如何计算的???
【问题讨论】:
-
“点值函数”是什么意思?
original.value只是原始字符串中char[]类型的实例字段。 -
在看
String的源码的时候可以理解,Java的String class其实是用char数组实现的,也就是你看到的value,类的一个领域,没什么好惊讶的。 -
你说得对,
new String ("newstring"),这里我们正在尝试创建String对象,但“newString”已经充当String对象,如何??? -
"newstring"(以及所有其他字符串文字)充当String,因为它是String。 -
Kevin,只是想了解一下 JVM 是如何在内部将每个 String 文字作为 String 对象的???