【发布时间】:2015-05-01 05:40:50
【问题描述】:
这个关于将二维数组传递给方法的问题是在课堂上提出的。有人可以解释为什么在调用 doStuff() 后原始数组 d 没有变化吗?我调试了代码,发现该方法正在反转值,但是当返回时,原始数组保持不变。我认为将数组传递给一个方法并更改该方法中的值会影响原始数组。这里不是这样,原始数组没有改变。我的第一个想法是原来的会被颠倒过来。但是没有。
-
初始化数组 d 并调用 doStuff 为 如下:
int d[][] = { {-1,0,1}, {5,6,7}, {2,3,4} }; doStuff(d); public static void doStuff (int [][] frst) { int len = frst.length; int sec[][] = new int[len] []; for (int j=0; j<len; j++) { sec[j] = frst[len –j -1]; } frst = sec; }
【问题讨论】:
-
java 是按值传递的,所以你需要返回值并将函数
doStuff的返回值再次赋值给变量d。