Buondi a tutti...
Ho da poco iniziato a programmare in Java e subito mi sono imbattuto in un dubbio che non mi riesce di risolvere!!!

Questo e il codice:
codice:
        Integer a = new Integer(1);
        Integer b = new Integer(1);
        System.out.println("a == b ? " + (a == b));
        System.out.println("a.equals(b) ? " + (a.equals(b)));
        //-----------------------------------------
        Integer c = 1;
        Integer d = 1;
        System.out.println("c == d ? " + (c == d)); //Restituisce 'True' su due oggetti distinti???
        System.out.println("c.equals(d) ? " + (c.equals(d)));
mentre questo e il risultato:
codice:
        a == b ? false
        a.equals(b) ? true
        c == d ? true
        c.equals(d) ? true
Ecco la domanda: come mai, nel caso 'c==d' viene restituito true anche se, i due oggetti sono completamente diversi??? Grazie di un eventuale risposta! :d