この記事では、java に関する関連知識を提供します。主に、配列のループ コピー、Arrays.copyOf メソッド、Arrays.copyofRange メソッドなど、基礎となる元のコードを通じて配列コピーを理解するための詳細な分析を紹介します。など、一緒に見ていきましょう。皆さんのお役に立てれば幸いです。
推奨学習: 「java ビデオ チュートリアル 」
ループを使用して、配列をコピーする コピーは非常に簡単で、ループを使用して、コピーする配列の要素を 1 つずつ新しい配列に代入するだけです。具体的なコード実装は次のとおりです:
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy = new int[arr.length]; for (int i = 0; i < arr.length; i++) { copy[i] = arr[i]; } }
これは私たちが一般的に考えるメソッドですが、JAVA が提供するさらに便利なメソッドをいくつか紹介します。
整数配列をコピーしているため、整数配列をコピーする Arrays.copyOf メソッドを使用します。整数配列だけでなく、他の型の配列もコピーできます。
整数配列をコピーすることによって Arrays.copyOf メソッドを説明しましょう。まず Arrays.copyOf メソッドの基礎となる元のコードを見てみましょう:
public static int[] copyOf(int[] original, int newLength) { int[] copy = new int[newLength]; System.arraycopy(original, 0, copy, 0, Math.min(original.length, newLength)); return copy; }
Array.copyOf が表示されます。メソッド 戻り値は整数配列であり、仮パラメータには 2 つのパラメータがあり、1 つは整数配列で、もう 1 つは整数変数です。
仮パラメータの整数配列は、コピーする配列の名前です。
仮パラメータの整数変数は、コピーする配列の長さです
戻り値があるため、Arrays.copyOf メソッドを使用する場合は、戻り値を受け取る配列が必要です。コードは次のように実装されます:
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy =Arrays.copyOf(arr,arr.length); }
注: コピーの長さは、コピーされる配列の長さを超えることができます。コピーされる配列の長さを超える場合、追加要素の値はは 0 になります; 例: arr 配列をコピーしたいのですが、arr 配列のサイズは 5 です。コピー時に arr.length*2 を変更すると、コピーされた配列のサイズは 10 になり、値は 6 になります。 ~10 要素は 0 です。これも拡張とみなされます。
部分配列の一部をコピーしたい場合は、Arrays.copyRange メソッドを使用できます。上記と同様に、整数配列のコピーを使用して説明します。まずその基になる元のコードを見てみましょう:
public static int[] copyOfRange(int[] original, int from, int to) { int newLength = to - from; if (newLength < 0) throw new IllegalArgumentException(from + " > " + to); int[] copy = new int[newLength]; System.arraycopy(original, from, copy, 0, Math.min(original.length - from, newLength)); return copy; }
Arrays.copyRange の元のコードから、戻り値が整数配列、および仮パラメータは整数配列と 2 つの整数変数です。
仮パラメータの整数配列は、コピーされる配列の配列名です。
仮パラメータの from と to の 2 つの整数変数は、必要な配列要素の範囲です。 to copy. ここに注意してください. 範囲は [form, to) で、左が閉じて右が開いています (to の位置の要素は除きます)。コードは次のように実装されます。
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy = Arrays.copyOfRange(arr,1,3); }
注: 配列の添字は 0 から始まり、1 ~ 3 の要素は 2、3、4 を参照します。ただし、右側は開区間であるため、4は含まれていないので、これをコピーします。 配列知識は 2 つの要素と 3 の 2 つの要素をコピーします。
次に、System.arraycopy メソッドについて話しましょう。実際、注意深い学生は、前の 2 つのメソッドの元のコードに System.arraycopy メソッドがあることを発見しました。それらの最下層も System.arraycopy メソッドによって実装されます。まず、基礎となる元のコードを見てみましょう
public static native void arraycopy(Object src, int srcPos, Object dest, int destPos, int length);
System.arraycopy では、実装された元のコードが表示されません。その理由は、ネイティブであり、その基礎となる層が C/C であるためです。成し遂げる。ただし、ネイティブ メソッドの利点は、実行が非常に速いことです。
public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy = new int[arr.length]; System.arraycopy(arr,0,copy,0,arr.length); }
このとき、arrの配列全体がコピーされますが、部分コピーしたい場合は、仮引数を変更することで部分コピーが完了します。
clone メソッド最後に 1 つは配列名.clone メソッドです。このメソッドを理解するだけで済みます。コードは次のように実装されます。public static void main(String[] args) { int[] arr = {1,2,3,4,5}; int[] copy = arr.clone(); }
Java ビデオ チュートリアル 」
以上がJava は、基礎となるソース コードを通じて配列コピーを理解します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。