问答详情
源自:-

麻烦大神们看看


class Fish{
	int w = 1;
}

class Lake {
	Fish fish;
	void setFish(Fish s){   //Fish s表示什么意思?
		fish = s;
	}
	void foodFish(int m){
		fish.w = fish.w+m;
	}
}
public class E {

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		Fish redFish = new Fish();
		System.out.println(redFish.w);
		Lake lake = new Lake();
		lake.setFish(redFish);
		lake.foodFish(120);
		System.out.println(redFish.w);  //请问这个结果怎么得来?
		System.out.println(lake.fish.w);

输出结果为1 121 121.

提问者:ShallHurk 2015-12-30 11:37

个回答

  • 产品经理不是经理
    2015-12-30 12:24:13
    已采纳

    让fish的引用指向你传入的s的引用,

    因为fish.w = fish.w+m,这里fish.w=1+120给w重新赋值了啊,而fish和redFish指向的是同一个对象,你改变了成员变量的值,当用redFish和lake里的fish去访问的时候,结果自然是121

  • 收拾好鑫情
    2015-12-30 14:10:12

    Fish s就是一个参数而已,跟int x是一样的

    redFish.w是121是因为你通过foodFish()修改了redFish这个对象的w值