在下面的代碼中,爲什麼在system.out.print打印數據時foo2爲空?這是如何適應java中「傳遞參考值」的?
public class Helper {
public void shadowCopy(Foo foo1, Foo foo2){
foo2 = foo1;
}
public static void main(String[] args) {
Helper h = new Helper();
Foo foo1 = new Foo(50);
Foo foo2= null;
h.shadowCopy(foo1, foo2);
System.out.println(foo2.data);// why java.lang.NullPointerException?
}
public static class Foo {
public int data=0;
public Foo(int data){
this.data = data;
}
}
}
Java只傳遞值,所以你的'shallowCopy'方法不會做任何事情。 – 2014-09-10 18:28:23
@Cgraphics foo2爲空,所以它會使foo1也爲空。它通過引用而非價值。意思是你的整個對象是空的而不僅僅是數據部分... – StackFlowed 2014-09-10 18:28:33
@Peter'shadowCopy',而不是'shallowCopy' – 2014-09-10 18:28:53