J'ai traduit [Méthode Clone pour les tableaux Java] comme méthode Clone dans les tableaux Java.

J'ai trouvé une explication facile à comprendre pour clone () dans les tableaux Java, donc je l'ai traduite.

[Quote] stackoverflow Clone method for Java arrays


Lorsque la méthode clone est appelée sur un tableau, elle renvoie une nouvelle instance du même élément de tableau. Par exemple, le code suivant crée différentes instances pour ʻint [] a et ʻint [] b.


    int[] a = {1,2,3};
    int[] b = a.clone();

    * 「a == b ?Est-ce que a et b sont la même instance? Jugement
    System.out.println(a == b ? "Même instance":"C'est une instance différente");
    //Sortie: instance différente

Puisque les deux sont des instances différentes, les modifications apportées à int [] b n'affecteront pas int [] a.


    b[0] = 5;
    System.out.println(a[0]);
    System.out.println(b[0]);
    //production: 1
    //       : 5

C'est un peu déroutant lorsqu'il s'agit d'organiser des objets. (Pour les tableaux) La méthode clone renvoie la destination de référence du nouveau tableau. Ce sera la même référence que l'objet du tableau source.

Par exemple, supposons que vous ayez une classe Dog.


    class Dog{

        private String name;

        public Dog(String name) {
            super();
            this.name = name;
        }

        public String getName() {
            return name;
        }

        public void setName(String name) {
            this.name = name;
        }

    }

Et j'ajoute un tableau de Dog class.


    Dog[] myDogs = new Dog[4];

    myDogs[0] = new Dog("Wolf");
    myDogs[1] = new Dog("Pepper");
    myDogs[2] = new Dog("Bullet");
    myDogs[3] = new Dog("Sadie");

Et quand vous clonez dog ...

    Dog[] myDogsClone = myDogs.clone();

Les deux font référence au même élément.


    System.out.println(myDogs[0] == myDogsClone[0] ? "le même":"Faux");
    System.out.println(myDogs[1] == myDogsClone[1] ? "le même":"Faux");
    System.out.println(myDogs[2] == myDogsClone[2] ? "le même":"Faux");
    System.out.println(myDogs[3] == myDogsClone[3] ? "le même":"Faux");
    //Sortie: même(4 fois)

Cela signifie que les deux ont la même référence, donc si vous apportez une modification à la séquence clonée, la modification sera reflétée dans la séquence d'origine.

    //Toutes les modifications que vous apportez à myDogsClone seront également reflétées dans les valeurs des éléments de myDogs.
    myDogsClone[0].setName("Ruff"); 
    System.out.println(myDogs[0].getName());
    //Sortie: Ruff

Cependant, si vous créez une nouvelle instance pour le tableau, les modifications n'affecteront pas l'instance d'origine.

    myDogsClone[1] = new Dog("Spot");
    System.out.println(myDogsClone[1].getName());
    System.out.println(myDogs[1].getName());
    //Sortie: Spot
    //      Pepper

J'ai beaucoup appris! : détendu:

Recommended Posts

J'ai traduit [Méthode Clone pour les tableaux Java] comme méthode Clone dans les tableaux Java.
Appelez la super méthode en Java
Implémentation de la méthode de clonage pour Java Record
J'ai essayé le nouveau yuan à Java
Quelle est la méthode principale en Java?
[Java] Gestion des Java Beans dans la chaîne de méthodes
ChatWork4j pour l'utilisation de l'API ChatWork en Java
[Java] Quelque chose est affiché comme "-0.0" dans la sortie
Je veux que vous utilisiez Scala comme meilleur Java pour le moment
Joindre des tableaux en Java
Quand j'ai voulu créer une méthode pour Premium Friday, c'était déjà dans l'API standard Java 8
Remarque sur l'initialisation des champs dans le didacticiel Java
J'ai essayé d'utiliser l'instruction Extended for en Java
J'ai essayé d'implémenter la méthode de division mutuelle d'Eugrid en Java
Révision parce que j'ai utilisé la méthode collection_check_boxes dans le portefeuille Ralis
[Java] ArrayList → La taille doit-elle être spécifiée dans la conversion de tableau?
[Rails] J'ai essayé d'utiliser la méthode button_to pour la première fois
J'ai fait une roulette à Java.
[Android, Java] Méthode pratique pour calculer la différence en jours
Créer une méthode pour renvoyer le taux de taxe en Java
[Java] J'ai essayé d'implémenter la combinaison.
Implémenter la même fonction que C, système C ++ ("cls"); en Java
J'ai étudié le constructeur (java)
J'ai essayé la métaprogrammation avec Java
Je souhaite simplifier l'instruction if-else de la branche conditionnelle en Java
[Java] Comment rechercher des valeurs dans un tableau (ou une liste) avec la méthode contains
J'ai fait un "Sunshine Ikezaki game" que j'ai vu sur Twitter en Java.
Java14 est sorti, alors j'ai essayé d'enregistrer pour le moment
Élimine les tracas liés au traitement des tableaux C comme des tuples par Swift
Création d'une méthode pour demander Premium Friday (version Java 8)
[Java] J'ai essayé de faire un labyrinthe par la méthode de creusage ♪
[Java] Je veux effectuer distinctement avec la clé dans l'objet
Une histoire que j'ai finalement comprise Java pour une déclaration en tant que non-ingénieur
Tirez parti de l'un ou l'autre pour la gestion des exceptions individuelles dans l'API Java Stream
Accéder à l'interface réseau avec Java
J'ai envoyé un e-mail en Java
Devinez le code de caractère en Java
Les débutants jouent à des jeux Janken en Java
Méthode de redimensionnement automatique des photos par Java
J'ai créé un PDF avec Java.
[Pour les débutants] Exécutez Selenium sur Java
Spécifiez l'emplacement Java dans eclipse.ini
Comparaison Java à l'aide de la méthode compareTo ()
Décompressez le fichier zip en Java
J'ai essayé d'expliquer la méthode
J'ai écrit le théorème de Gordobach en java
J'ai essayé le framework Java "Quarkus"
Analyser l'analyse syntaxique de l'API COTOHA en Java
J'ai fait une annotation en Java.
J'ai essayé d'utiliser JWT en Java
Paramètres de débogage SSL dans Java
Fonctionnement des tableaux en Java (illustration)
Java12 est sorti, alors j'ai essayé l'expression switch pour le moment
J'ai appelé l'analyse de la syntaxe de l'API COTOHA 100 fois en Java pour mesurer les performances.
J'ai écrit EX25 du guide de programmation AtCoder pour les débutants (APG4b) en java.
Je souhaite obtenir l'adresse IP lors de la connexion au Wi-Fi avec Java
[Communication Socket (Java)] Impressions de la mise en œuvre de la communication Socket dans la pratique pour la première fois
J'ai essayé de traduire la grammaire de R et Java [Mis à jour de temps en temps]