我知道这个问题以前已经问过,但我找不到满意的答案。 假设一个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++ –
一样,非常感谢。 –