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

Comment copier un tableau en Java

(*-*)浩
Libérer: 2019-05-22 15:09:37
original
2280 Les gens l'ont consulté

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]
Copier après la connexion

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);
Copier après la connexion

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]
Copier après la connexion

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;
}
Copier après la connexion

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新的数组
Copier après la connexion

(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]
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Derniers numéros
Impossible d'installer Java
Depuis 1970-01-01 08:00:00
0
0
0
Java peut-il être utilisé comme backend du Web ?
Depuis 1970-01-01 08:00:00
0
0
0
Installer JAVA
Depuis 1970-01-01 08:00:00
0
0
0
Aide : Données chiffrées JAVA Décryptage PHP
Depuis 1970-01-01 08:00:00
0
0
0
Est-ce en langage Java ?
Depuis 1970-01-01 08:00:00
0
0
0
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal