いわゆる配列のコピーとは、ある配列の要素を別の配列にコピーすることを指します
Java で配列のコピーを実装するには、次の 4 つの方法があります。
元の代入メソッド
Arrays クラスの copyOf() メソッド
次の copyOfRange() Arrays クラス Method
System クラスの arraycopy() メソッド
# Object クラスの clone() メソッド
public static void method01(int[] arr, int[] ans) { for (int i = 0; i < arr.length; i++) { ans[i] = arr[i]; } System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }
copyOf() メソッドは、配列を指定された長さにコピーします
Arrays クラスの copyOf() メソッド 構文形式は以下のとおりです。
Arrays.copyOf(dataType[] srcArray,int length);
このうち、 srcArray
はコピー対象の配列、 length
はコピー対象の配列を表します。コピー後の新しい配列の長さ。
このメソッドを使用して配列をコピーする場合、コピーはデフォルトで元の配列の最初の要素 (インデックス値は 0) から開始され、ターゲット配列の長さは length になります。 length が srcArray.length より大きい場合は、ターゲット配列にデフォルト値が埋められます。length が srcArray.length より小さい場合は、length 要素 (インデックス値は length-1) までコピーされます。
注: ターゲット配列がすでに存在する場合、それは再構築されます。
public static void method02(int[] arr, int[] ans) { ans = Arrays.copyOf(arr, arr.length + 3); System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }
Arrays クラスの CopyOfRange() メソッドは、配列をコピーする別のメソッドです。その構文は次のとおりです:
Arrays.copyOfRange(dataType[] srcArray,int startIndex,int endIndex)
ここで:
#srcArray は元の配列を表します。
startIndex は、コピーを開始する開始インデックスを示します。ターゲット配列には、開始インデックスに対応する要素が含まれます。また、startIndex は 0 から srcArray.length までの範囲にする必要があります。
endIndex は終了インデックスを表します。ターゲット配列には終了インデックスに対応する要素は含まれません。endIndex は startIndex 以上である必要があり、srcArray.length より大きくてもかまいませんsrcArray.length より大きい場合、ターゲット配列のデフォルト値が入力されます。
注: ターゲット配列がすでに存在する場合、それは再構築されます。
public static void method03(int[] arr, int[] ans) { ans = Arrays.copyOfRange(arr, 0, arr.length + 3); System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }
arraycopy() メソッドは java.lang.System クラスにあり、その構文は次のとおりです。
このうち、srcArray は元の配列を表し、srcIndex は元の配列の開始インデックスを表し、destArray はターゲット配列を表し、destIndex はターゲット配列の開始インデックスを表し、length はコピーされる配列の長さを表します。 このメソッドを使用して配列をコピーする場合、長さ srcIndex は srcArray.length 以下、長さ destIndex は destArray.length 以下である必要があります。 注: ターゲット配列はすでに存在している必要があり、再構築されません。これは、ターゲット配列内の一部の要素を置き換えることと同じです。System.arraycopy(dataType[] srcArray,int srcIndex,int destArray,int destIndex,int length)5. clone() メソッドを使用するclone() メソッドでも配列をコピーできます。このメソッドは Object クラスのメソッドであり、別のメモリ空間を持つオブジェクトを作成できます。配列も Object クラスであるため、配列オブジェクトの clone() メソッドを使用して配列をコピーすることもできます。 clone() メソッドの戻り値は Object 型であるため、適切な型にキャストする必要があります。その構文は比較的単純です:
public static void method03(int[] arr, int[] ans) { ans = Arrays.copyOfRange(arr, 0, arr.length + 3); System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }
array_name.clone()
注: 上記のメソッドはすべて浅いコピーです。浅いコピーでは、オブジェクトの参照アドレスのみがコピーされます。2 つのオブジェクトは同じメモリ アドレスを指しているため、いずれかの値が変更されると、もう一方の値もそれに応じて変更されます。ディープ コピーでは、オブジェクトと値がコピーされます。2 つのオブジェクトのいずれかの値が変更されても、もう一方の値は変更されません。
完全なテスト ケース
public static void method05(int[] arr, int[] ans) { ans = arr.clone(); System.out.println("复制的ans数组为 " + Arrays.toString(ans)); }
出力
元のコピー メソッドによってコピーされた ans 配列is [ 57, 81, 68, 75, 91]copyOf() メソッドによってコピーされた ans 配列は [57, 81, 68, 75, 91, 0, 0, 0]
コピーされた ans 配列copyOfRange() メソッドにより [57, 81, 68, 75, 91, 0, 0, 0]
arraycopy() メソッドでコピーされた ans 配列は [57, 81, 68, 75, 91]# でコピーされます##clone() メソッド ans 配列は [57, 81, 68, 75, 91]
です
以上がこれは次のように書き換えることができます。 Java配列をコピーするにはどのような方法がありますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。