Ho appena visto il codice simile a questo:Strano Integer boxe in Java
public class Scratch
{
public static void main(String[] args)
{
Integer a = 1000, b = 1000;
System.out.println(a == b);
Integer c = 100, d = 100;
System.out.println(c == d);
}
}
Quando correva, questo blocco di codice stamperà fuori:
false
true
capisco perché il primo è false
: perché i due oggetti sono oggetti separati, quindi lo ==
confronta i riferimenti. Ma non riesco a capire, perché la seconda affermazione restituisce true
? C'è qualche strana regola di autoboxing che interviene quando il valore di un Integer è in un certo intervallo? Cosa sta succedendo qui?
Sembra una vittima di http://stackoverflow.com/questions/1514910/when-comparing-two-integers-in- java-does-auto-unboxing-occorrono –
@ RC - Non è un vero capriccio, ma una situazione simile è discussa. Grazie per il riferimento però. – Joel
questo è orribile. questo è il motivo per cui non ho mai capito il punto di tutto questo primitivo, ma oggetto, ma entrambi, ma auto-inscatolato, ma dipende, ma aaaaaaaaargh. – njzk2