Java 对象引用:浅拷贝示例及解析

我们定义一个简单的 Student 类,包含 namesno 属性,并实现 input 方法用于输入学生信息:

class Student {
    String name;
    String sno;

    public void input(String name, String sno) {
        this.name = name;
        this.sno = sno;
    }
}

接着,我们创建两个 Student 对象 s1s2,并分别调用 input 方法输入学生信息:

Student s1 = new Student();
s1.input('张三', '210905162');

Student s2 = new Student();
s2.input('李四', '210905163');

最后,我们将 s1 赋值给 s2

s2 = s1;

并输出 s1names2sno

System.out.println(s1.name + ',' + s2.sno);

输出结果为:'张三,210905162'。

为什么会出现这样的结果?

这是因为在执行 s2 = s1; 这行代码时,s2 的引用指向了 s1 所指向的对象,即 s1s2 指向同一块内存空间。这意味着 s1s2 实际上指向同一个 Student 对象。因此,当我们修改 s1 的属性时,s2 的对应属性也会随之改变。

这种赋值方式被称为浅拷贝,它只是复制了对象的引用,而不是复制对象本身。如果我们想要创建两个独立的 Student 对象,需要使用深拷贝,这需要我们手动创建新的对象并复制所有属性的值。

总结

Java 中的对象引用是指向对象的内存地址,通过赋值操作可以将一个引用指向另一个对象的地址。浅拷贝只会复制对象的引用,因此多个引用可能会指向同一个对象,修改其中一个引用指向的对象会影响其他引用指向的对象。

Java 对象引用:浅拷贝示例及解析

原文地址: http://www.cveoy.top/t/topic/mzEF 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录