创建变量的别名/引用(JAVA)

Arc*_*yno 4 java reference

我使用了很多 C++,但我对 Java 的工作方式感到很困惑:如果我有一个类

public class MyClass{
    private int[] myVariable;
     ...

    public int[] getVar(){
        return myVariable;
    }
}
Run Code Online (Sandbox Code Playgroud)

然后我想在其他地方使用我的变量:

public static void main(String[] args){
    MyClass myObject  = new MyClass();
    ...
    int[] temp = myObject.getvariable();
    // use of temp
    ...
}
Run Code Online (Sandbox Code Playgroud)

temp 是 myVariable 的副本还是引用?

你如何获得副本/参考?

Pau*_*ton 5

int[]您的示例中只有一个。根本没有复制。该方法返回的getVar是对对象的引用。

线后

int[] temp = myObject.getvariable();
Run Code Online (Sandbox Code Playgroud)

双方tempmyVariable是同一个对象的引用。您可以通过执行例如temp[0] = 9;. 更改将在两个地方都可见。

如果您想复制一个数组,您可以使用其中之一array.clone()Arrays.copyOf(array, array.length)或者System.arraycopy(...)在您的示例中不使用这些。