ホームページ  >  記事  >  Java  >  Java は、基礎となるソース コードを通じて配列コピーを理解します。

Java は、基礎となるソース コードを通じて配列コピーを理解します。

WBOY
WBOY転載
2022-07-22 16:42:591791ブラウズ

この記事では、java に関する関連知識を提供します。主に、配列のループ コピー、Arrays.copyOf メソッド、Arrays.copyofRange メソッドなど、基礎となる元のコードを通じて配列コピーを理解するための詳細な分析を紹介します。など、一緒に見ていきましょう。皆さんのお役に立てれば幸いです。

Java は、基礎となるソース コードを通じて配列コピーを理解します。

推奨学習: 「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 メソッドを説明しましょう。まず 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.copyofRange メソッド

部分配列の一部をコピーしたい場合は、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 メソッド

次に、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 サイトの他の関連記事を参照してください。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。