默认情况下,Java 会进行浅克隆,如果克隆了一个对象并且它有一个像这样的字符串 String s = new String("Hi");
那么克隆的对象将指向一个新的 String对象还是它将引用前一个对象?
这里的问题是,Java 在克隆和创建它的新对象时是否会以不同的方式对待字符串?
最佳答案
new 总是创建新的 String 对象
- 每次
new
用于创建一个String,它会创建一个新的对象 - 指向
new
创建的字符串的引用可以是intern
ed 分配给字符串池中的现有条目,如果不存在则创建新条目。
克隆
- 如果是克隆,则完全取决于克隆方法的实现
- 如果克隆完成为
super.clone
无需任何额外代码,则复制所有引用(假设super
是对象) - 所以
String
克隆对象内的引用将共享现有的String
原始对象指向的对象
关于java - 在 Java 中克隆对象时,字符串会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66287375/