Ich habe [Klonmethode für Java-Arrays] als Klonmethode in Java-Arrays übersetzt.

Ich habe eine leicht verständliche Erklärung für "clone ()" in Java-Arrays gefunden und sie daher übersetzt.

[Quote] Stackoverflow Clone method for Java arrays


Wenn die Klonmethode für ein Array aufgerufen wird, wird eine neue Instanz desselben Array-Elements zurückgegeben. Der folgende Code erstellt beispielsweise verschiedene Instanzen für "int [] a" und "int [] b".


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

    * 「a == b ?Ist a und b dieselbe Instanz? Beurteilung
    System.out.println(a == b ? "Gleiche Instanz":"Es ist eine andere Instanz");
    //Ausgabe: Andere Instanz

Da es sich bei beiden um unterschiedliche Instanzen handelt, wirken sich Änderungen an int [] b nicht auf int [] a aus.


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

Dies ist etwas verwirrend, wenn es darum geht, Objekte anzuordnen. (Für Arrays) Die Klonmethode gibt das Referenzziel des neuen Arrays zurück. Dies ist dieselbe Referenz wie das Quellarrayobjekt.

Angenommen, Sie haben eine Hundeklasse.


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

    }

Und ich füge eine Reihe von "Hundeklassen" hinzu.


    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");

Und wenn Sie "Hund" klonen ...

    Dog[] myDogsClone = myDogs.clone();

Die beiden beziehen sich auf dasselbe Element.


    System.out.println(myDogs[0] == myDogsClone[0] ? "das Gleiche":"Falsch");
    System.out.println(myDogs[1] == myDogsClone[1] ? "das Gleiche":"Falsch");
    System.out.println(myDogs[2] == myDogsClone[2] ? "das Gleiche":"Falsch");
    System.out.println(myDogs[3] == myDogsClone[3] ? "das Gleiche":"Falsch");
    //Ausgabe: Gleich(4 Mal)

Dies bedeutet, dass beide dieselbe Referenz haben. Wenn Sie also eine Änderung an der geklonten Sequenz vornehmen, wird die Änderung in der ursprünglichen Sequenz wiedergegeben.

    //Alle Änderungen, die Sie an myDogsClone vornehmen, werden auch in den Werten der Elemente in myDogs berücksichtigt.
    myDogsClone[0].setName("Ruff"); 
    System.out.println(myDogs[0].getName());
    //Ausgabe: Ruff

Wenn Sie jedoch eine neue Instanz für das Array erstellen, wirken sich die Änderungen nicht auf die ursprüngliche Instanz aus.

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

Ich habe viel gelernt! : entspannt:

Recommended Posts

Ich habe [Klonmethode für Java-Arrays] als Klonmethode in Java-Arrays übersetzt.
Rufen Sie die Super-Methode in Java auf
Implementierung der Klonmethode für Java Record
Ich habe das neue Yuan-Problem in Java ausprobiert
Was ist die Hauptmethode in Java?
[Java] Behandlung von Java Beans in der Methodenkette
ChatWork4j für die Verwendung der ChatWork-API in Java
[Java] In der Ausgabe wird etwas als "-0.0" angezeigt
Ich möchte, dass Sie Scala vorerst als besseres Java verwenden
Verbinden Sie Arrays in Java
Als ich eine Methode für Premium Friday erstellen wollte, war sie bereits in der Java 8-Standard-API enthalten
Ein Hinweis zum Initialisieren von Feldern im Java-Lernprogramm
Ich habe versucht, die erweiterte for-Anweisung in Java zu verwenden
Ich habe versucht, die Methode der gegenseitigen Teilung von Eugrid in Java zu implementieren
Überprüfen Sie, weil ich die Methode collection_check_boxes im Ralis-Portfolio verwendet habe
[Java] ArrayList → Sollte die Größe bei der Array-Konvertierung angegeben werden?
[Rails] Ich habe zum ersten Mal versucht, die button_to-Methode zu verwenden
Ich habe ein Roulette in Java gemacht.
[Android, Java] Praktische Methode zur Berechnung der Differenz in Tagen
Erstellen Sie eine Methode, um den Steuersatz in Java zurückzugeben
[Java] Ich habe versucht, die Kombination zu implementieren.
Implementieren Sie dieselbe Funktion wie das C, C ++ - System ("cls") in Java
Ich habe den Konstruktor (Java) studiert.
Ich habe versucht, Metaprogrammierung mit Java
Ich möchte die if-else-Anweisung für bedingte Verzweigungen in Java vereinfachen
[Java] So suchen Sie mit der Methode includes nach Werten in einem Array (oder einer Liste)
Ich habe ein "Sunshine Ikezaki-Spiel" gemacht, das ich auf Twitter in Java gesehen habe.
Java14 kam heraus, also habe ich vorerst versucht aufzunehmen
Besiege den Aufwand, C-Arrays von Swift als Tupel zu behandeln
Erstellt eine Methode zum Anfordern von Premium Friday (Java 8-Version)
[Java] Ich habe versucht, mit der Grabmethode ein Labyrinth zu erstellen ♪
[Java] Ich möchte mit dem Schlüssel im Objekt eindeutig arbeiten
Eine Geschichte, die ich als Nicht-Ingenieur endlich verstanden habe
Nutzen Sie entweder für die individuelle Ausnahmebehandlung in der Java Stream-API
Greifen Sie mit Java auf die Netzwerkschnittstelle zu
Ich habe eine E-Mail in Java gesendet
Errate den Zeichencode in Java
Anfänger spielen Janken-Spiele in Java
Automatische Methode zur Größenänderung von Fotos von Java
Ich habe ein PDF mit Java erstellt.
[Für Anfänger] Führen Sie Selenium auf Java aus
Geben Sie den Java-Speicherort in eclipse.ini an
Java-Vergleich mit der compareTo () -Methode
Entpacken Sie die Zip-Datei in Java
Ich habe versucht, die Methode zu erklären
Ich habe Gordobachs Theorem in Java geschrieben
Ich habe das Java-Framework "Quarkus" ausprobiert.
Analysieren der COTOHA-API-Syntaxanalyse in Java
Ich habe eine Anmerkung in Java gemacht.
Ich habe versucht, JWT in Java zu verwenden
Einstellungen für das SSL-Debugging in Java
Funktionsweise von Arrays in Java (Abbildung)
Java12 kam heraus, also habe ich vorerst den Schalterausdruck ausprobiert
Ich habe die COTOHA-API-Syntaxanalyse 100 Mal in Java aufgerufen, um die Leistung zu messen.
Ich habe EX25 des AtCoder Programming Guide für Anfänger (APG4b) in Java geschrieben.
Ich möchte die IP-Adresse erhalten, wenn ich mit Java eine Verbindung zu Wi-Fi herstelle
[Socket-Kommunikation (Java)] Eindrücke von der erstmaligen Implementierung der Socket-Kommunikation in der Praxis
Ich habe versucht, die Grammatik von R und Java zu übersetzen [Von Zeit zu Zeit aktualisiert]