您的位置:首页 > 其它

引用传递

2014-03-06 23:02 26 查看
class Tank {
int level;
public Tank(int level){
this.level = level;
}
}

public class Assignment {
public static void main(String[] args) {
Tank t1 = new Tank(9);
Tank t2 = new Tank(47);
System.out.println("t1.level: " + t1.level +
", t2.level: " + t2.level);
//t1现在指向t2对象
t1 = t2;
System.out.println("t1.level: " + t1.level +
", t2.level: " + t2.level);

//修改t1的同时也修改了t2
t1.level = 36;
System.out.println("t1.level: " + t1.level +
", t2.level: " + t2.level);

//传递给f()函数的是t1的引用,而不是t1的副本
f(t1);
System.out.println("t1.level:"+t1.level +
", t2.level: " + t2.level);
}

public static void f(Tank tank) {
tank.level = 5;
}
}
//如果只想改变t1的level值而不影响t2的值,可以这样调用
// t1.level = t2.level
//但直接操作对象的属性违背面向对象程序设计的原则
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: