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