下列程序会输出什么
class value {
public int i = 15;
}
public class ValueTransmit {
public static void main(String[] args) {
first();
}
private static void first() {
int i = 100;
value v = new value();
v.i = 25;
second(v, i);
System.out.println("," + v.i);
}
private static void second(value v, int i) {
i = 0;
v.i = 20;
value value = new value();
v = value;
System.out.print(v.i + "," + i);
}
}
答案是 15,0,20
这道题主要是考察面试者对值传递和引用传递的掌握程度
图片是一种好的解释,解释见下图
首先是first方法的情况
images
然后是second的传入了两者的引用情况后
images
接下来是second方法的具体情况
images
综上所述:在传值(传引用)就相当于制造了一把备用钥匙.
通过这把钥匙可以改变仓库的货,原钥匙管理的仓库没有变,只不过是被备用钥匙篡改了.
来源: http://www.jianshu.com/p/1b3216a8c4b7