1. 配列の長さは等しい
nums と nums1 が同じ長さの 2 つの配列であると仮定します。
#(推奨チュートリアル:java コース )
1.1. 割り当ての前に nums = nums1; を使用します##割り当て後
nums が作成されると、格納用のメモリ領域がヒープ内に作成され、nums はこのメモリ アドレス A を指します。 nums1 が作成されると、それは B を指します。
ここで、nums = nums1 とすると、num1 のアドレス (または参照) が num に割り当てられるため、num も B を指します。どちらの配列もヒープ内の同じメモリ領域を指し、内部のデータを共有します。
##1.2、ループ用##for (int i = 0; i < nums1.length; i++){ nums[i] = nums1[i]; }
ループ前
#ループ後
参照を変更せずに、nums 配列の内部内容を正常に変更しました。
1.3、配列クラス
方法 1: 指定された配列を指定された長さにコピーする
nums = Arrays.copyOf(nums1,5);方法 2: 指定された配列の指定された長さをコピーする
nums = Arrays.copyOfRange(nums1,0,5);2 種類 メソッドの最後のインデックスを配列の長さ以上にすることができ、残りに 0 が追加されます。 どちらの方法でも配列を正常にコピーでき、元の配列の番号が 524 から 526 に変更されたことがわかりました。これは、これら 2 つのコピー メソッドが新しい配列を作成し、等しい配列の左側にある配列を使用していることを示しています。この新しい配列を指すように署名します。
1.4. System.arraycopy メソッド
System.arraycopy(originalArray, 0, targetArray, 0, originalArray.length);
このメソッドは for ループと似ていることがわかります。 、つまり、参照を変更せずに、元の配列の内容が直接変更されます。
2. 配列の長さが等しくありません
赋值法成功for循环要注意越界问题,会报java.lang.ArrayIndexOutOfBoundsExceptionArrays类法成功注意越界问题,会报java.lang.ArrayIndexOutOfBoundsException
其他:
给定一个数组 nums,编写一个函数将所有 0 移动到数组的末尾,同时保持非零元素的相对顺序。
//思路:设置一个index,表示非0数的个数,循环遍历数组, // 如果不是0,将非0值移动到第index位置,然后index + 1 //遍历结束之后,index值表示为非0的个数,再次遍历,从index位置后的位置此时都应该为0 public void moveZeroes(int[] nums) { if (nums == null || nums.length <= 1) { return; } int index = 0; for (int i = 0; i < nums.length; i++) { if (nums[i] != 0) { nums[index] = nums[i]; index++; } } for (int i = index; i < nums.length; i++) { nums[i] = 0; } }
相关推荐:java入门
以上がJavaで配列をコピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。