3
我的問題是基於線26 這裏是我的分析:
Class A
{
intstance variable: Class B;
}
如果我使用
A.equals(Class B)
是否行26回真正的某個時候?
因爲在C++中,指針會在某些情況下指向相同的地址。
我的問題是基於線26 這裏是我的分析:
Class A
{
intstance variable: Class B;
}
如果我使用
A.equals(Class B)
是否行26回真正的某個時候?
因爲在C++中,指針會在某些情況下指向相同的地址。
第26行有時會返回true嗎?
不,它永遠不會返回true
,除非您給它提供相同的確切對象引用。
其原因是Java對象不是「嵌入」在另一箇中:在A
中有對B
的引用,但它指的是完全不同的對象。因此,不存在「假別名」:存儲A
類實例中對類B
的引用所在的位置與存儲B
本身的位置不同。
有沒有可能兩個對象共享相同的內存開始,雖然它們不是同一類(它們的大小不一樣)? – AlexWei 2014-10-11 13:10:08
@AlexWei否,內存中的對象位置不能重疊。與允許將對象嵌入到另一箇中的其他語言(如C++)不同,Java對象通過引用包含在內。這或多或少對應於在C++中有一個指向對象的指針。 – dasblinkenlight 2014-10-11 13:12:24