重新分配对象引用时出现意外输出
Unexpected output on re-assigning an object-reference
我正在学习 OOP,并获得了一些关于创建对象引用和检查结果的作业。我有一个 Book
class 和一个 BookTest
class,在 BookTest
class 中我对 [=13= 进行了 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 ..."
字符串。
这是为什么?
你理解错了。
如果你这样做:
b2=b1;
然后:
b1=b3;
b2
仍然是 b1
:
之前的引用
Book b1 = new Book("The story of ...");
Book b1 = new Book("The story of ...");
Book b2 = b1;
Book b3 = new Book("Second story");
Book b4 = new Book("Third story");
在 b1 = b3;
之后,b1 引用转到 b3 而不是 b2。
我希望这对理解有所帮助。
我正在学习 OOP,并获得了一些关于创建对象引用和检查结果的作业。我有一个 Book
class 和一个 BookTest
class,在 BookTest
class 中我对 [=13= 进行了 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 ..."
字符串。
这是为什么?
你理解错了。
如果你这样做:
b2=b1;
然后:
b1=b3;
b2
仍然是 b1
:
Book b1 = new Book("The story of ...");
Book b1 = new Book("The story of ...");
Book b2 = b1;
Book b3 = new Book("Second story");
Book b4 = new Book("Third story");
在 b1 = b3;
之后,b1 引用转到 b3 而不是 b2。
我希望这对理解有所帮助。