Vergleichen des Grundelements mit dem Wrapper-Objekt mit == unerklärtem Verhalten

Ich habe einen Code, den ich verstehen muss:

public static void main(String[] args) {
    Character c = new Character('a');
    Character cy = new Character('a');
    char cx = 'a';

    System.out.println(c == cx);
    System.out.println(cx == cy);
    System.out.println(c == cy);
}

Ausgabe

true
true
false

Ich kann nicht verstehen, warum nur die dritte Anweisung fehlschlägt.

EDIT: Diese Frage unterscheidet sich von der.equals vs== Frage wie diese über primitive versus Objektvergleich.

Antworten auf die Frage(8)

Ihre Antwort auf die Frage