La comparaison Java Integer (==) ne fonctionne pas correctement

phénomène

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); //"2 10000000 10000000" entre
        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("égal");
                return;
            }
        }
        System.out.println("Inégal");
    }
}

Le résultat devrait être 10000000 pour list.get (i) et 10000000 pour list.get (i + 1), mais le résultat n'est "pas égal". Pourquoi? ??

Le type primitif est ==, le type d'objet est ʻequals`

Puisque Integer est un type d'objet, lors de la comparaison avec ==, il semble qu'il sera "différent de" car il vérifiera s'il s'agit de la même instance.

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in); //"2 10000000 10000000" entre
        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("égal");
                return;
            }
        }
        System.out.println("Inégal");
    }
}

//résultat
//égal

En conclusion, lors de la comparaison des nombres, je devais faire attention à utiliser == pour le type primitif et ʻequals` pour le type d'objet.

Recommended Posts

La comparaison Java Integer (==) ne fonctionne pas correctement
le changement de largeur de tabulation d'éclipse ne fonctionne pas
[Java] Vérification de la plage qui ne nécessite pas de comparaison
La séquence d'échappement (\) ne fonctionne-t-elle pas? (pour Mac)
Lorsque @Transactional of Spring Boot ne fonctionne pas
Eclipse ne démarre pas après l'installation de Java 11
[Java] Comparaison de cartes
Comparaison du framework Java
@BeforeStep ne fonctionne pas avec le Tasklet Spring-batch
[Kotlin] La bibliothèque de mappage basée sur la réflexion basée sur Java ne fonctionne fondamentalement pas avec Kotlin.
Remarque: l'analyseur de mémoire ne fonctionne pas sous Mac OS
Hivernate Validator ne fonctionne pas dans l'environnement WAS Liberty
.Dockerignore ne fonctionne pas? Il est écrit différemment de .gitignore!
Comparaison de la notation de la version Java
Le terminal ne démarre pas
[Java] Comparaison des chaînes de caractères et && et ||
[Développement] Comparaison du framework Java
Correspondance lorsque l'application Java transformée en exe avec launch4j ne fonctionne pas sur les fenêtres où openJDK est installé
Aucune exception ne se produit lorsque Java double est divisé par zéro
[Rails] Résolution du problème selon lequel le délai d'expiration de la session ne fonctionne pas
[Java] com.sun.glass.WindowEvent est importé et la fenêtre ne se ferme pas
À l'invite de commande, java passe, mais pas javac.