重新分配对象引用时出现意外输出

时间:2016-02-07 16:21:33

标签: java oop object-reference

我正在学习OOP,并在制作对象引用和检查结果方面做了一些任务。我有一个Book类和一个BookTest类,在BookTest类中,我对Book对象进行了4次对象引用。

Book有一个名称,以及一个获取该书名称的函数。

class Book {
    private String name;

    public Book(String name) {
        this.name = name;
    }

    public String getName() {
        return this.name;
    }
}

Book对象的引用如下所示:

Book b1 = new Book("The story of ...");
Book b2 = b1;
Book b3 = new Book("Second story");
Book b4 = new Book("Third story");

这一切都很有效,每当我打印b2.getName()时,我都会得到预期的"The story of ..."字符串。

但每当我在打印b2.getName()行之前添加此行:

b1 = b3;

我希望b2.getName()"Second story",因为b1已分配给b3。它实际上仍然是"The story of ..."字符串。

为什么会这样?

2 个答案:

答案 0 :(得分:1)

Book b1 = new Book("The story of ...");
Book b2 = b1;
Book b3 = new Book("Second story");
Book b4 = new Book("Third story");

enter image description here

b1 = b3;之后,b1引用转到b3而不是b2。

enter image description here

我希望这有助于理解。

答案 1 :(得分:0)

你理解错了。

如果你这样做:

b2=b1;

然后:

b1=b3;

b2仍然使用b1的前引用:

Book b1 = new Book("The story of ...");