当前位置: 代码迷 >> Eclipse >> 请问一个java的小疑点,代码如下
  详细解决方案

请问一个java的小疑点,代码如下

热度:81   发布时间:2016-04-23 13:57:57.0
请教一个java的小问题,代码如下
class BB
{
int a;
}
public class RRRR {
public static void main(String aa[])
{
BB k=new BB();
BB t=new BB();
d=k;
d=t;
System.out.println(k==t);

}
}
当d=k是貌似对d操作和对k操作是一样的,那为什么当d=t后k又不等于t?这里面的引用到底是什么啊???

------解决方案--------------------

那我解释的已经很清楚了,你看能不能理解

探讨
引用:

代码没贴全,d的声明的类型不清楚
但是从代码来看,k是不可能等于t的
你理解的对d操作和对k操作是一样这个有问题
d=k的意义是将k指向的对象引用赋值给d,这样k d 指向的对象相同(k的指向没变)
然后d=t的意义是将t的对象引用赋值给d,这样d原来跟k指向相同变成了跟t的指向相同(t的指向没变)
这样两次赋值操作都没有改变k t的……

------解决方案--------------------
d=k;
是把d指向了k所指的地址.
d=t;
是把d指向了t所指的地址.

两句代码之后,实际上是d和t指向同一块内存.
k指向另一块内存.
t和k从头到尾都没有变过,当然不相等了.