日期:2014-05-20  浏览次数:20693 次

堆栈的问题,新人狂吐血~~~
这段代码是69元scjp书(邮电出版社)第114页面的代码。
class Dog{
String name;
public static void main(String [] args)
{Dog d=new Dog();//我知道这段代码就是让d指向了堆中的Dog对象,但书里说smalldog也指向了堆中的同一个Dog对象
d.god(d);}

void go(Dog smalldog)

smalldog.setName"wangcai";//是这里让smalldog也指向了Dog对象吗?明明没有等号嘛,谁能解析一下吗?没有等号也能让smalldog指向Dog对象?我很笨的
}

void setName(String dogname){name=dogname;}
}

------解决方案--------------------
不是,传入参数时,就发生smalldog=d了
------解决方案--------------------
我解释一下吧
1 Dog 是一致狗
2 我再一张纸上写了他的地址,从这个地址肯定能找到它。 这张纸叫d
3 我朋友也想看看这个狗,我就又写了一张纸,一次性使用的,上面写的相同的地址,这张纸叫 smalldog
4 我朋友根据smalldog的地址,找到了狗,并给狗改了名字 setName();
5 我朋友离开了,那个smalldog 纸片也就自动销毁了(smalldog 是一个函数变量)
6 可是,我的那张纸d, 上面依然写着那个狗的地址

7 请注意,我的纸 和 我朋友的纸是完全不同的2张纸,但是他们上面写的狗的地址是相同的。

希望你能明白,引用就是复制了一份地址。