コードに問題があることがわかりました。最初のコード:
public class Main {
/**
* @param args
*/
public static void main(String[] args) {
String[] blablubb = { "a", "b", "c" };
for(String s : blablubb) {
s = "over";
}
printArray(blablubb);
for (int i = 0; i < blablubb.length; i++) {
blablubb[i] = "over";
}
printArray(blablubb);
}
public static void printArray(String[] arr) {
for( String s : arr ) {
System.out.println(s);
}
}
}
出力は次のとおりです。
a
b
c
over
over
over
最初のループも配列内の文字列を上書きすると想定しました。したがって、出力はいずれにしても終了します。参照を作成する代わりに、値のコピーを作成しているようです。私はこれを認識したことがありません。私はそれを間違っていますか?代わりに参照を作成するオプションはありますか?
//編集: 私を除いて、誰もがそれについて知っているようです. 私は C のバックグラウンドから来ており、C とは非常に異なる参照という用語に十分な注意を払っていません。幸いなことに、これを理解するのに 10 分しかかかりませんでした (今回)。