私は自分でJavaを学習しています。以下のコードは、学習/テスト以外の機能を持っていません。foreachのJava修正要素
私は基本的に整数配列の要素を変更しようとしています(つまり、それらを半減させようとしています)。
私は要素の並べ替え、追加、削除をしていないことに注意してください。単純に値を変更します。ここで
は私のコードです:
Logger.describe("Now copying half of that array in to a new array, and halving each element");
Integer[] copyArray = new Integer[DEFAULT_SAMPLE_SIZE/2];
System.arraycopy(intArray, 0, copyArray, 0, DEFAULT_SAMPLE_SIZE/2);
for (Integer x : copyArray) x /= 2;
Logger.output(Arrays.deepToString(copyArray));
しかし、元の配列(intArray)がこれです:
[47, 31, 71, 76, 78, 94, 66, 47, 73, 21]
そしてcopyArrayの出力は次のとおりです。
[47, 31, 71, 76, 78]
もののので、配列のサイズが半分になり、要素(整数)も値が半分になりませんでした。だから私は何が間違っているの?
は
私は、これはあなたが 'X/2 'を行うときに、それはオブジェクトの値を変更しますが、自動的にされていない、オートボクシングとしなければならないと思いますそれをプリミティブ 'int'に変換し、それを分割するので、' Integer'インスタンスは影響を受けません。 – maksimov
したがって、/ =演算子は整数型ではなく、 'x'型変数をint型に変換する 'int'型の型にのみ適用できますか? – Xenoprimate
本質的に 'x = x/2'は' x =新しい整数(x.intValue()/ 2) 'です。したがって、配列に戻さないので、配列要素が変更されていません。 – maksimov