これは私の最初の質問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
変数を変更することはありません。なぜなら、私は引数として渡しているにもかかわらず、その変数が自分自身の復帰バージョンに変更され続ける理由がわかりません。
私は約1年間プログラミングしており、可変スコープなどの知識は非常に限られています。誰かが私を正しい方向に向けることができますか?
なぜdownvoteですか? – mc10
うわー。 – user1114051
私は今投票を変更しました...最初の回答では、この問題についての洞察はありませんでした。 +1 –