首页 > 解决方案 > 为什么 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]);
    }


}

标签: javastringshallow-copy

解决方案


推荐阅读