Maison Java javaDidacticiel Comment copier un tableau en Java

Comment copier un tableau en Java

May 22, 2019 pm 01:36 PM
java

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.

1

2

3

4

5

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 :

1

2

3

4

5

6

7

8

9

/**

     * 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 :

1

2

3

4

5

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 :

1

2

3

4

5

6

7

8

9

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 :

1

2

3

4

5

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

1

2

3

4

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!

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

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Racine carrée en Java Racine carrée en Java Aug 30, 2024 pm 04:26 PM

Racine carrée en Java

Nombre parfait en Java Nombre parfait en Java Aug 30, 2024 pm 04:28 PM

Nombre parfait en Java

Générateur de nombres aléatoires en Java Générateur de nombres aléatoires en Java Aug 30, 2024 pm 04:27 PM

Générateur de nombres aléatoires en Java

Numéro Armstrong en Java Numéro Armstrong en Java Aug 30, 2024 pm 04:26 PM

Numéro Armstrong en Java

Weka en Java Weka en Java Aug 30, 2024 pm 04:28 PM

Weka en Java

Numéro de Smith en Java Numéro de Smith en Java Aug 30, 2024 pm 04:28 PM

Numéro de Smith en Java

Questions d'entretien chez Java Spring Questions d'entretien chez Java Spring Aug 30, 2024 pm 04:29 PM

Questions d'entretien chez Java Spring

Break or Return of Java 8 Stream Forach? Break or Return of Java 8 Stream Forach? Feb 07, 2025 pm 12:09 PM

Break or Return of Java 8 Stream Forach?

See all articles