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.
让fish的引用指向你传入的s的引用,
因为fish.w = fish.w+m,这里fish.w=1+120给w重新赋值了啊,而fish和redFish指向的是同一个对象,你改变了成员变量的值,当用redFish和lake里的fish去访问的时候,结果自然是121
Fish s就是一个参数而已,跟int x是一样的
redFish.w是121是因为你通过foodFish()修改了redFish这个对象的w值