实例A = 实例B,这到底是做什么的?

Instance A = Instance B, what exactly does this do?

这段代码声明 course2 = course1 时发生了什么;因为之后发生的事情我无法理解。如果我注释掉 course2 = course1;我两次获得编程基础知识。


public Course(int courseID, String courseName) {
    ID = courseID;
    name = courseName;
}

public String getName() {
    return name;
}

public void setName(String newName) {
    name = newName;
}

public static void main(String[] args) {
    Course course1 = new Course(2531, "Programming Fundamentals");
    Course course2 = new Course(1285, "Algorithms and Analysis");

    System.out.println(course1.getName());

    course2 = course1;
    course2.setName("PF");
    System.out.println(course1.getName());
}

这输出为:
编程基础
PF

course1course2 是对 class Course.
对象的引用 使用 course2 = course1 可以将对象 course2 指向与 course1 相同的对象。因此,您之后可以使用 course1course2 访问同一个对象。

course2 = course1;

course2 的值更改为对 course1 引用的同一对象(由语句 new Course(2531, "Programming Fundamentals") 创建的对象)的引用。

因此 course1course2 现在引用同一个对象,因此 course2.setName("PF")course1.setName("PF") 具有相同的行为。因此第二个 System.out.println(course1.getName()) 打印 "PF".

如果注释掉 course2 = course1; 赋值,course2 将引用不同的对象,因此 course2.setName("PF") 不会影响 course1 引用的对象。因此第二个 System.out.println(course1.getName()) 仍然打印 "Programming Fundamentals".

course1 是一个变量,它引用一个对象,比方说object1.

course2 是另一个变量,它引用另一个对象,比方说 object2.

当您调用 course2 = course1 时,您让它们引用同一个对象 --object1.