我的一个课程中有这个方法:
public int[] getCurrentGridPosition()
{
return new int[]{currentGridPosX, currentGridPosY};
}
Java是否允许使用以下内容:
int x, y;
x = getCurrentGridPosition()[0];
y = getCurrentGridPosition()[1];
如果是,怎么样?如果不是,为什么?
答案 0 :(得分:2)
Java是否允许使用以下内容:
是的,这段代码没有任何 † 错误。这里有一个完整的程序,用你的代码证明它有效:
class Main{
private int currentGridPosX = 5,
currentGridPosY = 10;
public static void main(String[] a){
Main m = new Main();
m.test();
}
private void test(){
int x, y;
x = getCurrentGridPosition()[0];
y = getCurrentGridPosition()[1];
System.out.print("x: "+x+"; y: "+y);
}
public int[] getCurrentGridPosition()
{
return new int[]{currentGridPosX, currentGridPosY};
}
}
†:编译/运行时明智没有错。在最佳实践方面,当然有待改进的地方。
如果是,怎么样?
x = getCurrentGridPosition()[0];
将调用该方法并给出一个数组作为结果,然后将获取索引0
的元素,并将其保存在字段x
中。
y = getCurrentGridPosition()[1];
将再次调用该方法并给出一个数组作为结果,然后将获取索引为1
的元素,并将其保存在字段y
中。
因此,在几乎所有情况下,最好只调用一次方法并将结果数组保存在变量中,然后才能在索引0
和1
访问其元素:
int[] gridPositions = getCurrentGridPosition(); // The method is only called once now
int x = gridPositions[0],
y = gridPositions[1];
System.out.print("x: "+x+"; y: "+y);
答案 1 :(得分:0)
为什么不用更多的代码行呢? 例如,您可以像这样访问返回的数组:
int x, y;
int[] myArray = getCurrentGridPosition();
x = myArray[0];
y = myArray[1];
System.out.println("x: " + String.valueOf(x) + ", y: " + String.valueOf(y));