如何在Java中以一行返回数组?

Ste*_*eve 2 java memory-management

执行此代码时内存会发生什么变化?

int[] dim1 = new int[2];
dim1 = myObject.getCoord();

public int[] getCoord() {
   int[] dim2 = new int[] {y1, x1} ;
    return dim2;
}
Run Code Online (Sandbox Code Playgroud)

似乎空间首先分配给两个数组dim1dim2.虽然dim1将会存在,但dim2仅存在两行,然后转到gc.它似乎会导致真正大型数组的性能问题.但是,下面的代码是编译时错误.

public int[] getCoord() {
    return {y1, x1} ;
}
Run Code Online (Sandbox Code Playgroud)

背后的逻辑是什么?创建一个数组的正确方法是什么?

Joh*_*ner 6

你的意思是这样吗?

int[] dim1 = myObject.getCoord();

public int[] getCoord() {
    return new int[] {y1, x1} ;
}
Run Code Online (Sandbox Code Playgroud)

通过方法调用只创建一个数组,并且只有一个引用dim1.

理想情况下,您可能不希望"获取"方法创建新事物,只需查看您可能不期望的声明即可.就个人而言,我更喜欢

int[] dim1 = myObject.createCoord();

public int[] createCoord() {
    return new int[] {y1, x1} ;
}
Run Code Online (Sandbox Code Playgroud)

这使得该方法明确地"创造"了一个东西.