buongiorno a tutti
mi sto cimentando nell'apprendere un po di programmazione in java e mi sono imbattuto in questo strano dubbio:
codice:
public class confronto {
public static void main(String[] args) {
Integer o1=new Integer(10);
Integer o2=o1;
Integer o3=new Integer(10);
int p1=10;
int p2=p1;
int p3=10;
System.out.println("Confronto per ugualianza");
System.out.println("o1.equals(o2): "+o1.equals(o2));
System.out.println("o1.equals(o3): "+o1.equals(o3));
System.out.println("o1.equals(p2): "+o1.equals(p2));
System.out.println("o1.equals(p3): "+o1.equals(p3));
System.out.println();
System.out.println("Confronto per identità");
System.out.println("p1==p2: "+ (p1==p2));
System.out.println("p1==p3: "+ (p1==p3));
System.out.println("o1==o2: "+ (o1==o2));
System.out.println("o1==o3: "+ (o1==o3));
System.out.println("p1==o2: "+ (p1==o2));
System.out.println("p1==o3: "+ (p1==o3));
}
}
ESECUZIONE;
Confronto per ugualianza
o1.equals(o2): true
o1.equals(o3): true
o1.equals(p2): true
o1.equals(p3): true
Confronto per identità
p1==p2: true
p1==p3: true
o1==o2: true
o1==o3: false
p1==o2: true
p1==o3: true
Questo programma non ha alcuno scopo serve solo per vedere le differenze tra equals e ==....
Ora viene il mio problema: perchè il confornto per identità di p1==o2 e p1==o3 danno risultato true? Il confronto per identità (==) non dovrebbe controllare se sono la stessa entità o no? se risulta true significa che sono la stessa cosa? l'unica soluzione che mi viene in mente è che se confronto un primitivo con un non primitivo == non guardi il riferimento ma il valore ma questa è solo una mia ipotesi...
grazie delle risposte