Java String 转换为 char 数组

标签 java string

我想问"".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/

相关文章:

java - 存储单词联想的数据结构

Windows PATH 到 bash 中的 posix 路径转换

字符数组比较问题

java - Spark 1.6 : How do convert an RDD generated from a Scala jar to a pyspark RDD?

Java Socket 服务器端无法读取 play 框架应用程序中传入的文本行

java - 如何使用 Maven 创建安装程序

c++ - 将字符串与 C++ 中的一组字符进行比较

c++ - 从 3 个 vector 中删除重复项

java - JSP中如何定向另一个页面?

java - 在 Java 8 中迭代 HashMap 时出现稳定的元素排序问题