Java 交换二维数组行

Java 交换二维数组行,java,arrays,Java,Arrays,我使用此代码交换二维数组行(a和B): 但调用此方法并显示数组后,它根本没有改变 为什么?这是因为您正在交换引用,引用是按值传递的(我知道,这听起来很混乱,但Java就是这么做的)。当你做这个作业的时候 rowA = rowB; 更改的效果在函数内部可见,而不是在函数外部可见。为了使调用者能够看到效果,您需要对数组对象进行操作 方法如下:首先,更改API以获取索引而不是实际行。然后将代码更改为在2D数组中使用这些索引,如下所示: public static void swapRows(int[

我使用此代码交换二维数组行(a和B):

但调用此方法并显示数组后,它根本没有改变


为什么?

这是因为您正在交换引用,引用是按值传递的(我知道,这听起来很混乱,但Java就是这么做的)。当你做这个作业的时候

rowA = rowB;
更改的效果在函数内部可见,而不是在函数外部可见。为了使调用者能够看到效果,您需要对
数组
对象进行操作

方法如下:首先,更改API以获取索引而不是实际行。然后将代码更改为在2D数组中使用这些索引,如下所示:

public static void swapRows(int[][] array, int rowA, int rowB) {
    int[] tempRow = array[rowA];
    array[rowA] = array[rowB];
    array[rowB] = tempRow;
}

这是因为您正在交换引用,引用是通过值传递的(我知道,这听起来很混乱,但Java就是这么做的)。当你做这个作业的时候

rowA = rowB;
更改的效果在函数内部可见,而不是在函数外部可见。为了使调用者能够看到效果,您需要对
数组
对象进行操作

方法如下:首先,更改API以获取索引而不是实际行。然后将代码更改为在2D数组中使用这些索引,如下所示:

public static void swapRows(int[][] array, int rowA, int rowB) {
    int[] tempRow = array[rowA];
    array[rowA] = array[rowB];
    array[rowB] = tempRow;
}

看来你对我没有任何改变。您将把每一行放入临时行以及行A和行B的何处?您应该尝试打印出行的内容。此外,这可以使用for循环来完成。这可能是一本有用的阅读资料,它将帮助您了解java中参数的传递方式。您的操作对我来说似乎没有任何改变。您将把每一行放入临时行以及行A和行B的何处?您应该尝试打印出行的内容。此外,这可以使用for循环来完成。这可能是一本有用的读物,它将帮助您理解java中参数是如何传递的。