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

时间:2018-05-06 08:12:31

标签: java object instance

当此代码声明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

3 个答案:

答案 0 :(得分:2)

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"

答案 1 :(得分:0)

course1course2是对班级Course的对象的引用 使用course2 = course1,您可以将对象course2更改为与course1相同的对象。因此,您可以使用course1course2访问同一个对象。

答案 2 :(得分:0)

course1是一个变量,它引用一个对象,比如说object1。

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

当您致电course2 = course1时,您会让他们引用相同的对象 - object1