我正在查看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
根据设计,字符串保存Unicode文本,因此可以组合所有语言脚本。为此,该实现包含一个数组(字段名value),其中每个字符都是两个字节的UTF-16值。
您在Java类中遇到了一个和AFAIK唯一的傻点。
所示的拷贝构造函数是毫无意义的,因为字符串是不可变的对象,它们可以通过简单的赋值来共享。它是C ++继承的化石,也许与String实习有关。
进行复制是没有意义的。这对于内部char数组也适用,实际上可以通过引用来分配。(不是很重要)。
因此,以下内容显示了没有经验的Java用法:
String s = new String(t);
在最新的Java版本中,String的值实际上可能是某种编码形式的字节数组,因此,懒惰地提供了chars。
回答来源:Stack Overflow
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。