Maison >Java >javaDidacticiel >Comment copier un tableau en Java

Comment copier un tableau en Java

(*-*)浩
(*-*)浩original
2019-05-22 13:36:412240parcourir

Il existe plusieurs façons de copier un tableau en Java :

Comment copier un tableau en Java

(1) cloner

(2) System.arraycopy

(3) Arrays.copyOf

(4) Arrays.copyOfRange

Ce qui suit présente leur utilisation :

(1) La méthode clone est héritée de la classe Object. Les types de données de base (String, boolean, char, byte, short, float, double.long) peuvent être clonés directement à l'aide de la méthode clone. Les types peuvent être utilisés car leurs valeurs sont immuables.

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) La méthode System.arraycopy est une méthode locale, définie comme suit dans le code source :

/**
     * 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);

Exemple d'utilisation :

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]

Remarque : Cette méthode nous oblige à créer nous-mêmes un nouveau tableau

(3) La couche inférieure de Arrays.copyOf utilise en fait également System.arraycopy. Le code source est le suivant :

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;
}

Exemple d'utilisation :

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) La couche inférieure de Arrays.copyOfRange utilise en fait System.arraycopy, mais elle encapsule une méthode

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]

Enfin , il convient de noter que la copie du type de base est si elle n'affecte pas la valeur du tableau d'origine, elle ne peut pas être utilisée s'il s'agit d'un type référence, car la copie (réplication) du tableau est une copie superficielle.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Article précédent:Qu’est-ce qu’un CV Java ?Article suivant:Qu’est-ce qu’un CV Java ?