配列名は配列の先頭ポインタが指す***要素のアドレス ここまで理解できれば、あとは腰で考えてみればa=bが成り立たないことが分かると思います一般に C および C では、次のような単一の値を割り当てるためにループが使用されます:
for(int i=0;i
a[i]=b[i];
達成方法長い間 C と C を学習した後、私はそれを使用することが増えましたが、面倒だとは思いません。しかし、JAVA では、C は C と同じではありません。JAVA は非常に賢いです。a=b を使用して b を a に代入できます。ここでの代入に注意してください。JAVA で a=b を使用する場合、a のコンテンツが配列形式で出力されると、b の内容とまったく同じであるため、この方法が実行可能であることがわかります。これが私のプログラムでの使用方法ですが、バグが発生します。最初は、a=b と a=a.clone(); のどちらを使用しても結果が同じであることがわかり、少し混乱しましたが、今では完全に理解できました。この問題を説明するために、プログラムを使って説明します:
private int[] subResources(int[] aa, int[] bb) { // 做减法 int []a=aa; int []b=bb; for (int i = 0; i < a.length; i++) a[i] = a[i] - b[i]; return a; }
これは、2 つの配列を減算する関数を実装するために使用されます。呼び出し側プログラム
int []allo=pcb0.getAllocation().clone(); //方式1 //int []allo=pcb0.getAllocation()//方式2 int[] allocation = this.addResources(allo, request);
で上記の 2 つのメソッドを使用します。パラメーターを渡すことによってもたらされるさまざまな結果は、関数 addResources で渡されたパラメーターの値を変更する場合、メソッド 1 では元のデータを変更できませんが、メソッド 2 では元のデータを変更できることです。方法 1 で値を代入する場合、まず配列のコピーを作成し、そのコピーをターゲット配列に代入します。このように、コピー配列のアドレスは元の配列のアドレスと確実に同じではありません。どのように変更しても、方法 1 は元のデータを変更しませんが、方法 2 は異なります。方法 2 は、データのアドレスを対象データに直接代入します。このように、2 つの配列の配列名は実際には異なります。同じアドレスを参照しているので、もちろん元の値を変更することができます。
こうして分析すると、Cでいう関数の引数のポインタと参照値の受け渡しに似ています。Javaではポインタが放棄されているため、すべての参照関係が参照型を使用します。Cを使うと時間がかかります。このような間違いを犯しやすいのです。 C のように値 addResources (int *a,int *b) や addResources (int a[],int b[]) を渡すのとは異なります。これはデメリットになります。人生でこの場所にいるのはこれだけのようです。もっと学ぶことに集中しなければなりません。就職説明会の基本的な質問が簡単そうに見えても、誰もがうまく答えられるわけではない理由がわかりました。 。
以上がJavaで配列間で値を代入する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。