我想问"".value
如何转换char数组
,谢谢
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;
}
最佳答案
当您引用其源代码时,您应该告诉您正在查看哪个 JRE 实现。
但是,代码非常简单:
-
""
指的是String
由 JVM 初始化的常量 - 因为您位于
String()
内构造函数可能会被应用程序代码调用,但不会被 JVM 内部初始化调用,它可以安全地引用""
常数 像其他
String
一样对象,它有value
字段,所以在String
内构造函数,访问private
是没有问题的字段并复制引用文献;它相当于String tmp = ""; this.value = tmp.value;
由于两者,""
常量和使用 String()
创建的实例构造函数代表空字符串,共享 char[]
没有问题它们之间的数组实例。然而,也有一些反对的理由:
- 它正在优化一个不常见的情况,因为通常没有理由使用
String()
根本没有构造函数 - 它很脆弱,因为它依赖于特定的 JVM 行为,即常量
""
不是通过String()
构建的构造函数;如果这个假设是错误的,这个实现将创建一个循环依赖
关于Java String 转换为 char 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32860821/