如何解决在 Java 中克隆对象时,字符串会发生什么变化?
默认情况下,Java 会执行浅克隆,如果一个对象被克隆并且它有一个像 String s = new String("Hi");
这样的字符串,那么克隆的对象将指向一个新的 String 对象,或者它将引用前一个对象?
这里的问题是,Java 在克隆和创建它的新对象时是否对字符串的处理有所不同??
解决方法
new 总是创建新的 String 对象
- 每次使用
new
创建一个String时,都会创建一个新对象 - 指向由
new
创建的字符串的引用可以intern
分配给字符串池中的现有条目,如果不存在则创建新条目。
克隆
- 如果是clone,则完全取决于clone方法的实现
- 如果克隆是作为
super.clone
完成的,没有任何额外的代码,那么所有的引用都会被复制(假设super
是对象) - 因此,克隆对象内的
String
引用将共享原始对象指向的现有String
对象
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。