【发布时间】:2011-12-23 22:44:48
【问题描述】:
这是我在 StackOverflow 上的第一个问题。这是有问题的代码:
public class ListStuff {
public static void main(String [] args) {
String[] randomNames = {"Herbie", "Jaco", "Pat", "Michael"};
String[] reversedNames = revertNames(randomNames);
for (int i = 0; i < reversedNames.length; i++) {
System.out.println(reversedNames[i]);
}
}
public static String[] revertNames(String[] s) {
for (int i = 0; i < s.length / 2; i++) {
String tmp = s[s.length - 1 - i];
s[s.length - 1 - i] = s[i];
s[i] = tmp;
}
return s;
}
}
此代码运行良好,reversedNames 变量打印为已恢复;那里没有投诉。然而,我主要担心的是,当我执行String[] reversedNames = revertNames(randomNames); 时,变量randomNames 也会被还原。我在任何地方都没有用randomNames = blabla; 更改randomNames 变量,所以我看不出为什么该变量不断更改为自身的还原版本,即使我只是将它作为参数传递。
我已经编程了大约一年,我对变量作用域等的了解非常有限。谁能指出我正确的方向?
【问题讨论】: