ホームページ >Java >&#&チュートリアル >Javaで配列をコピーする方法

Javaで配列をコピーする方法

(*-*)浩
(*-*)浩オリジナル
2019-05-22 13:36:412233ブラウズ

Java で配列をコピーするにはいくつかの方法があります:

Javaで配列をコピーする方法

(1) clone

# # (2) System.arraycopy

(3) Arrays.copyOf

(4) Arrays.copyOfRange

これらの使用法を以下に紹介します。 ##(1) clone メソッドは Object クラスから継承されており、基本データ型 (String、boolean、char、byte、short、float、double.long) は clone メソッドを使用して直接複製できます。型は値が不変であるため使用できます。

int a1[]={1,3};
int a2[]=a1.clone();
a1[0]=666;
System.out.println(Arrays.toString(a1));//[666,3]
System.out.println(Arrays.toString(a2));//[1,3]

2) System.arraycopy メソッドはローカル メソッドであり、ソース コードで次のように定義されています。

/**
     * System.arraycopy(src,srcPos,dest,destPos,length);
     * src :源数组          srcPos:源数组要复制的起始位置;
     * dest:目的数组   destPos:目的数组放置的起始位置;
     * length:复制的长度.
     */    
public static native void arraycopy(Object src,  int  srcPos,
                                        Object dest, int destPos,
                                        int length);

使用例:

int  a1[]={1,2,3,4,5};
int a2[]=new int[10];
System.arraycopy(a1,1,a2,3,3);
System.out.println(Arrays.toString(a1));//[1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2));//[0, 0, 0, 2, 3, 4, 0, 0, 0, 0]

注:

このメソッドでは、新しい配列を自分で作成する必要があります (3) Arrays.copyOf の最下層では、実際には System.arraycopy も使用されます。ソース コードは次のとおりです:

public static <T,U> T[] copyOf(U[] original, int newLength, Class<? extends T[]> newType) {
        @SuppressWarnings("unchecked")
        T[] copy = ((Object)newType == (Object)Object[].class)
            ? (T[]) new Object[newLength]
            : (T[]) Array.newInstance(newType.getComponentType(), newLength);
        System.arraycopy(original, 0, copy, 0,
                         Math.min(original.length, newLength));
        return copy;
}

使用例:

int  a1[]={1,2,3,4,5};
int a2[]=Arrays.copyOf(a1,3);//(原数组,拷贝的个数)
System.out.println(Arrays.toString(a1));//[1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2));//[1, 2, 3]    
//这个方法不需要我们new新的数组
(4) Arrays.copyOfRange の最下層は実際には System.arraycopy を使用しますが、メソッド

int  a1[]={1,2,3,4,5};
int a2[]=Arrays.copyOfRange(a1,0,1);//(原数组,开始位置,拷贝的个数)
System.out.println(Arrays.toString(a1));//[1, 2, 3, 4, 5]
System.out.println(Arrays.toString(a2));//[1]

The をカプセル化します。最後に注意すべきことは、基本型のコピーは元の配列の値に影響を与えない場合、配列のコピー (レプリケーション) は浅いコピーであるため、参照型である場合は使用できません。

以上がJavaで配列をコピーする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。