Java 对象引用:浅拷贝示例及解析
Java 对象引用:浅拷贝示例及解析
我们定义一个简单的 Student 类,包含 name 和 sno 属性,并实现 input 方法用于输入学生信息:
class Student {
String name;
String sno;
public void input(String name, String sno) {
this.name = name;
this.sno = sno;
}
}
接着,我们创建两个 Student 对象 s1 和 s2,并分别调用 input 方法输入学生信息:
Student s1 = new Student();
s1.input('张三', '210905162');
Student s2 = new Student();
s2.input('李四', '210905163');
最后,我们将 s1 赋值给 s2:
s2 = s1;
并输出 s1 的 name 和 s2 的 sno:
System.out.println(s1.name + ',' + s2.sno);
输出结果为:'张三,210905162'。
为什么会出现这样的结果?
这是因为在执行 s2 = s1; 这行代码时,s2 的引用指向了 s1 所指向的对象,即 s1 和 s2 指向同一块内存空间。这意味着 s1 和 s2 实际上指向同一个 Student 对象。因此,当我们修改 s1 的属性时,s2 的对应属性也会随之改变。
这种赋值方式被称为浅拷贝,它只是复制了对象的引用,而不是复制对象本身。如果我们想要创建两个独立的 Student 对象,需要使用深拷贝,这需要我们手动创建新的对象并复制所有属性的值。
总结
Java 中的对象引用是指向对象的内存地址,通过赋值操作可以将一个引用指向另一个对象的地址。浅拷贝只会复制对象的引用,因此多个引用可能会指向同一个对象,修改其中一个引用指向的对象会影响其他引用指向的对象。
原文地址: http://www.cveoy.top/t/topic/mzEF 著作权归作者所有。请勿转载和采集!