met*_*ors 3 java arrays parameter-passing pass-by-reference variable-assignment
我想将给定数组的精确副本复制到其他数组,但即使我更改了新数组中任何数组的值,它也不会更改原始数组中的值.我尝试了以下代码,但在第三行之后,数组都更改并获得相同的值.
int [][]a = new int[][]{{1,2},{3,4},{5,6}};
int[][] b = a;
b[1][0] = 7;
Run Code Online (Sandbox Code Playgroud)
而不是第二行我也尝试过
int[][] b = (int[][])a.clone();
int [][] b = new int [3][2];
System.arraycopy(a,0,b,0,a.length);
int [][] b = Arrays.copyOf(a,a.length);
Run Code Online (Sandbox Code Playgroud)
这些都没有帮助.请建议我一个合适的方法.我在eclipse剪贴簿中测试了这段代码.
你必须复制数组的每一行; 你无法复制整个数组.您可能听说过这称为深度复制.
接受你需要一个诚实到善的for循环.
int[][] b = new int[3][];
for (int i = 0; i < 3; i++) {
b[i] = Arrays.copyOf(a[i], a[i].length);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12000 次 |
| 最近记录: |