首页 > 解决方案 > 实例 A = 实例 B,这究竟是做什么的?

问题描述

当这段代码声明 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());
}

这输出为:
Programming Fundamentals
PF

标签: javaobjectinstance

解决方案


course2 = course1;

将 的值更改为对(由语句创建的对象)course2引用的同一对象的引用。course1new 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"


推荐阅读