buongiorno a tutti
mi sto cimentando nell'apprendere un po di programmazione in java e mi sono imbattuto in questo strano dubbio:
Questo programma non ha alcuno scopo serve solo per vedere le differenze tra equals e ==....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
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![]()

Rispondi quotando