Der Java Integer-Vergleich (==) funktioniert nicht richtig

Phänomen

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); //"2 10000000 10000000" kommt herein
        int n = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) list.add(sc.nextInt());

        for (int i = 0; i < n-1; i++) {
            if (list.get(i) == list.get(i+1)) {
                System.out.println("gleich");
                return;
            }
        }
        System.out.println("Nicht gleich");
    }
}

list.get (i) sollte 10000000 sein und list.get (i + 1) sollte gleich 10000000 sein, aber das Ergebnis ist "ungleich". Warum? ??

Der primitive Typ ist "==", der Objekttyp ist "gleich"

Da Integer ein Objekttyp ist, scheint es beim Vergleich mit == "nicht gleich" zu sein, da geprüft wird, ob es sich um dieselbe Instanz handelt.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); //"2 10000000 10000000" kommt herein
        int n = sc.nextInt();
        List<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) list.add(sc.nextInt());

        for (int i = 0; i < n-1; i++) {
            if (list.get(i).equals(list.get(i+1))) {
                System.out.println("gleich");
                return;
            }
        }
        System.out.println("Nicht gleich");
    }
}

//Ergebnis
//gleich

Zusammenfassend musste ich beim Vergleichen von Zahlen darauf achten, "==" für den primitiven Typ und "gleich" für den Objekttyp zu verwenden.

Recommended Posts

Der Java Integer-Vergleich (==) funktioniert nicht richtig
Die Änderung der Breite der Eclipse-Registerkarte funktioniert nicht.
[Java] Bereichsprüfung, für die kein compareTo erforderlich ist
Funktioniert die Escape-Sequenz (\) nicht? (für Mac)
Wenn @Transactional of Spring Boot nicht funktioniert
Eclipse wird nach der Installation von Java 11 nicht gestartet
[Java] Kartenvergleich
Java Framework Vergleich
@BeforeStep funktioniert nicht mit Spring-Batch-Tasklet
[Kotlin] Die auf Java basierende Mapping-Bibliothek funktioniert grundsätzlich nicht mit Kotlin.
Hinweis: Memory Analyzer funktioniert unter Mac OS nicht
Hivernate Validator funktioniert nicht in der WAS Liberty-Umgebung
Funktioniert .dockerignore nicht? Es ist anders geschrieben als .gitignore!
Vergleich der Java-Versionsnotation
Terminal startet nicht
[Java] Vergleich von Zeichenketten und && und ||
[Entwicklung] Java Framework Vergleich
Die Korrespondenz, wenn eine Java-Anwendung mit launch4j in exe erstellt wurde, funktioniert unter Windows, in dem openJDK installiert ist, nicht
Es tritt keine Ausnahme auf, wenn Java double durch Null geteilt wird
[Rails] Behebung des Problems, dass das Sitzungszeitlimit nicht funktioniert
[Java] com.sun.glass.WindowEvent wird importiert und das Fenster wird nicht geschlossen
An der Eingabeaufforderung wird Java übergeben, Java jedoch nicht.