您需要 登录 才可以下载或查看,没有账号?立即注册
这里可能就有疑问了,String范例也是引用范例,为什么进行了深拷贝,即如上所示,改变a2的属性值category,但却没有改变a1的category? String范例有点特殊,它本身没有实现Cloneable接口,故根本无法克隆,只能转达引用(注意:Java只有值转达,只是这里转达是原来引用所在值)。在clone()后,克隆后的对象开始也是指向的原来引用所在值(刚克隆完检查a1.category == a2.category 为true),但是一旦String的值发生改变(String作为不可更改的类——immutable class,在新赋值的时间,会创建了一个新的对象)就改变了克隆后对象指向的所在,让它指向了一个新的String所在,不会影响原对象的指向和值,原来的String对象还是指向的它自己的的所在。这样String在拷贝的时间就表现出了深拷贝的特点
使用道具 举报
登录后关闭弹窗