繁体   English   中英

当 object 被克隆到 Java 中时,字符串会发生什么?

[英]What happens to Strings when object is cloned in Java?

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

这里的问题是,Java 在克隆和创建新的 object 时是否对字符串进行了不同的处理?

new 总是创建新字符串 object

  1. 每次使用new创建String时,都会创建一个新的object
  2. 指向由new创建的字符串的引用可以被intern以分配给字符串池中的现有条目,或者如果它不存在则创建新条目。

克隆

  1. 在克隆的情况下,这一切都取决于克隆方法的实现
  2. 如果克隆是作为super.clone完成的,没有任何额外的代码,那么所有的引用都会被复制(假设super是 Object)
  3. 因此,克隆的 object 中的String引用将共享原始 object 指向的现有String对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM