我知道這個問題以前已經問過,但我找不到滿意的答案。 假設一個Java類:是一個Java類變量對類對象的引用嗎?
class Foo{
public int k;
Foo(int a){
k=a;
}
}
class My{
public static void main(String args[]){
Foo obj = new Foo(5);//1
obj=new Foo(8); //2
}
}
我想知道如果obj可以被假定爲是一個Foo類型的對象的引用。按照我在第1行中的理解,JVM創建一個新的foo類型的對象,並將其引用傳遞給obj,但是在第2行中,我們能夠用新對象覆蓋obj的值。
所以我的問題是,如果obj是一個引用,那麼它不應該只指向一個對象(從C++派生這個定義,引用就像常量指針)。
還有一件事,如果我將obj傳遞給一個函數,並且該函數對它做了一些更改,這些更改是否也會反映到主函數範圍中? –
是的,就像C++一樣,當你傳遞指向C++函數的指針,並在函數內部對指針指向的內存位置進行任何更改時,它也反映在其他函數中(這稱爲'by reference by reference') ,它對於java對象是一樣的,當你將java對象傳遞給函數時,它們通過'reference'傳遞,對象內部的任何變化都會被反映出來。但請注意,就像C++一樣,如果直接更改完整對象本身,可以說一行像'argument = new Foo(10)',它們將不會被反映出來,與C++ –
一樣,非常感謝。 –