java - 在 Java 中克隆对象时,字符串会发生什么?

标签 java string jvm cloning shallow-copy

默认情况下,Java 会进行浅克隆,如果克隆了一个对象并且它有一个像这样的字符串 String s = new String("Hi"); 那么克隆的对象将指向一个新的 String对象还是它将引用前一个对象?

这里的问题是,Java 在克隆和创建它的新对象时是否会以不同的方式对待字符串?

最佳答案

new 总是创建新的 String 对象

  1. 每次new用于创建一个String,它会创建一个新的对象
  2. 指向 new 创建的字符串的引用可以是intern ed 分配给字符串池中的现有条目,如果不存在则创建新条目。

克隆

  1. 如果是克隆,则完全取决于克隆方法的实现
  2. 如果克隆完成为 super.clone无需任何额外代码,则复制所有引用(假设 super 是对象)
  3. 所以String克隆对象内的引用将共享现有的 String原始对象指向的对象

关于java - 在 Java 中克隆对象时,字符串会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66287375/

相关文章:

java - Callable 接口(interface)是一个线程吗?它工作时我无法运行任何东西

python - 通过字符串名称执行函数

java - java编译究竟是如何发生的?

java - 如何使用参数映射和构建器实例化对象?

java - java - 如何将整数列表与java流相加?

java - Android:AsyncTask 空指针异常,但它们应该在列表中

java - 修改 String/Integer 对象并检查它是否影响以该对象作为参数的类对象

json - Go:检测无效 JSON 字符串字符的最佳方法是什么?

java - 来自随机代码行的 NullPointerExceptions

java - jvisualvm 连接到远程 jstatd 不显示应用程序