Vergleichen von Integer-Objekten [duplizieren]

Diese Frage hat hier bereits eine Antwort:

Wie werden zwei Ganzzahlen in Java richtig verglichen? 8 answers

Ich habe den folgenden Code:

public class Test {

    public static void main(String[] args) {

        Integer alpha = new Integer(1);
        Integer foo = new Integer(1);

        if(alpha == foo) {
            System.out.println("1. true");
        }

        if(alpha.equals(foo)) {
            System.out.println("2. true");
        }

    } 

}

Die Ausgabe ist wie folgt:

2. true

Jedoch den Typ eines @ ändeInteger object zuint erzeugt eine andere Ausgabe, zum Beispiel:

public class Test {

    public static void main(String[] args) {

        Integer alpha = new Integer(1);
        int foo = 1;

        if(alpha == foo) {
            System.out.println("1. true");
        }

        if(alpha.equals(foo)) {
            System.out.println("2. true");
        }

    } 

}

Die neue Ausgabe:

1. true
2. true

Wie kann das so sein? Warum gibt der erste Beispielcode nicht @ au1. true?

Antworten auf die Frage(5)

Ihre Antwort auf die Frage