java - 为什么 String 不受浅拷贝的影响?
问题描述
对不起英语不好。
在学习 Java 语法时,我有一个关于浅拷贝的问题。
我认为浅复制的对象只是复制字段值,而这个类型为引用地址的字段是原始地址。
而且我认为 String 也是引用类型。
但是当我测试我的代码时,其他引用类型指向它们的原始地址,但只有 String 有它自己的地址
这是我的代码
class Member implements Cloneable {
String a ="1";
String[] b = {"a"};
public Member getClone() {
Member cloned = null;
try {
cloned = (Member)clone();
}catch (Exception e){
}
return cloned;
}
}
public class Main{
public static void main(String[] args) {
Member origin = new Member();
Member copied = origin.getClone();
copied.a = "2";
copied.b[0] = "c";
System.out.println(origin.a);
System.out.println(origin.b[0]);
System.out.println(copied.a);
System.out.println(copied.b[0]);
}
}
解决方案
推荐阅读
- javascript - 如何将相机始终设置在用户地理位置的中心
- php - 结合mysql结果
- php - 不显示带有 Skype 链接的 Href
- snowflake-cloud-data-platform - 数据共享 如何与读者帐户共享 UDF?
- python - Python script export to .exe including some excel and numpy calculations
- vba - 如何在没有重复代码的情况下编写 or 语句(VBA)
- amazon-web-services - 如何在 AWS ApiGatewy 方法中设置自定义标头
- android - 在 Kotlin 中使用实时数据和 RxJava 的领域
- excel - 使用 VBA 自动调整特定单元格行
- javascript - Webpack:禁用延迟加载