Java String转换为char数组

时间:2015-09-30 07:57:43

标签: java string

我想问一下"".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;
}

2 个答案:

答案 0 :(得分:4)

当您引用其源代码时,您应该告诉您正在查看哪个JRE实现。

但是,代码非常简单:

  • ""是指由{JVM
  • 初始化的String常量
  • 因为你在String()构造函数内部可能被应用程序代码调用,而不是JVM内部初始化,所以它可以安全地引用""常量
  • 与任何其他String对象一样,它有value字段,因此在String构造函数中,访问private字段并没有问题复制参考文献;它相当于

    String tmp = "";
    this.value = tmp.value;
    

由于两者都是""常量和使用String()构造函数创建的实例表示空字符串,因此在它们之间共享char[]数组实例没有问题。但是,有理由反对它:

  • 它正在优化一个不常见的案例,因为通常没有理由使用String()构造函数
  • 它很脆弱,因为它依赖于特定的JVM行为,即通过""构造函数构造的常量String()不是 ;如果这个假设是错误的,那么这个实现将创建一个循环依赖

答案 1 :(得分:0)

"".value 

创建空的char[]数组,相当于this.value = new char[0];