-1

どうすれば次のことを達成できるか教えてもらえますか。Java は私の強みではありません。検索を試みた後も、Java のページは常に参照渡しになっています。

void edit(int[] a){
    a = new String[]{"q","r","s","t","u"};
}

int[] x = new int[]{"a","b","c"};
edit(x);
System.out.println(x); // ["q","r","s","t","u"]    

関数に渡した後に x のポインターを変更できるように、上記を達成しようとしています。

ご協力ありがとうございます

4

1 に答える 1

5

Java は純粋に値渡しです。メソッドの引数として使用される変数の値を変更するメソッド内では何もできません。Javaでは不可能です。

あなたの例では、配列の内容を変更できますが、配列が参照しているものを変更することはできません。次のようにします。x

void edit(int[] a) {
   a[0] = 1;
   a[1] = 2;
   a[2] = 3;
}

ここでの違いに注意してください。参照する配列の内容は変更できますが、内からx変更することはできません。たとえば、配列の長さを変更することはできません。それを行う唯一の方法は、新しい配列を作成してそれを指すことであり、.xeditxedit

その他のオプション:

  • 新しい配列をedit返して、それを に割り当てxます。
  • を使用するListと、要素の数を変更できます。
  • 変更可能なプロパティを持つクラスを作成し、そのクラスのインスタンスを渡します。
于 2013-10-27T11:19:41.717 に答える