开发者社区> 问答> 正文

Java String构造函数如何实现?

我正在查看Java String源代码,发现了一个CTOR,对此我有些怀疑:

public String(String original) {
    this.value = original.value;
    this.hash = original.hash;
}

我知道Original充当文字String(带双引号),但无法理解java / jvm是如何计算original.value为charArray的。这里的“价值”是什么?如果值是char数组,那么如何.value计算函数/字段?

问题来源:Stack Overflow

展开
收起
montos 2020-03-22 15:32:11 690 0
1 条回答
写回答
取消 提交回答
  • 根据设计,字符串保存Unicode文本,因此可以组合所有语言脚本。为此,该实现包含一个数组(字段名value),其中每个字符都是两个字节的UTF-16值。

    您在Java类中遇到了一个和AFAIK唯一的傻点。

    所示的拷贝构造函数是毫无意义的,因为字符串是不可变的对象,它们可以通过简单的赋值来共享。它是C ++继承的化石,也许与String实习有关。

    进行复制是没有意义的。这对于内部char数组也适用,实际上可以通过引用来分配。(不是很重要)。

    因此,以下内容显示了没有经验的Java用法:

    String s = new String(t);
    

    在最新的Java版本中,String的值实际上可能是某种编码形式的字节数组,因此,懒惰地提供了chars。

    回答来源:Stack Overflow

    2020-03-22 15:38:10
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载