我想问一下"".value
如何变换char array
,谢谢
public final class String
implements java.io.Serializable, Comparable<String>, CharSequence {
/** The value is used for character storage. */
private final char value[];
/**
* Initializes a newly created {@code String} object so that it represents
* an empty character sequence. Note that use of this constructor is
* unnecessary since Strings are immutable.
*/
public String() {
this.value = "".value;
}
答案 0 :(得分:4)
当您引用其源代码时,您应该告诉您正在查看哪个JRE实现。
但是,代码非常简单:
""
是指由{JVM String
常量
String()
构造函数内部可能被应用程序代码调用,而不是JVM内部初始化,所以它可以安全地引用""
常量与任何其他String
对象一样,它有value
字段,因此在String
构造函数中,访问private
字段并没有问题复制参考文献;它相当于
String tmp = "";
this.value = tmp.value;
由于两者都是""
常量和使用String()
构造函数创建的实例表示空字符串,因此在它们之间共享char[]
数组实例没有问题。但是,有理由反对它:
String()
构造函数""
构造函数构造的常量String()
不是 ;如果这个假设是错误的,那么这个实现将创建一个循环依赖答案 1 :(得分:0)
"".value
创建空的char[]
数组,相当于this.value = new char[0];