Confrontando gli oggetti interi vs int – java

Ho fissato un ciclo infinito cambiando il numero intero su INT in quanto segue:

public class IntTest {public static void main(String args) {Integer x=-1;Integer total=1000;while(x != total){System.out.println("x =" + x + "total ="+ total);x++;}}}

Qual è la ragione giusta per questo? Pensavo che Integer non paragoni alcun problema.

Grazie.

Risposte:

17 per la risposta № 1

Perché quando lo fai! = Confrontando nell’oggetto, confronta i riferimenti. E i riferimenti tra due oggetti in generale sono diversi.

Quando le voci vengono confrontate, i primitivi vengono sempre confrontati, diciamo che nessun riferimento (nessun oggetto), ma valori.

Pertanto, se si desidera lavorare con Integer, devi Usa uguale () in essi.

Inoltre, se i valori sono tra 0 e 255, il confronto tra numeri interi funziona bene, a causa della cache.

Puoi leggere qui: http://download.oracle.com/javase/tutorial/java/data/numberclasses.html

6 per la risposta № 2

Integer è un Object, e gli oggetti vengono confrontati con .equals(..)

vengono confrontati solo primitivi con ==

che è la regola, a parte alcuni casi eccezionali, dove == può essere utilizzato per confrontare gli oggetti. Ma anche allora non è consigliabile.

2 per la risposta № 3

Il problema è che intero è una classe e quindi, anche il confronto è fatto come per qualsiasi altra classe, utilizzando il metodo .equals () (). Se lo confronta con ==, confronta i riferimenti che sono sempre diversi per due casi diversi. Il tipo primitivo int non è una classe, ma un tipo Java incorporato e il confronto viene gestito soprattutto dal compilatore e funziona come previsto.

2 per la risposta № 4

È possibile utilizzare Integer.intValue () per ottenere il valore INT per il confronto, se hai davvero bisogno di utilizzare Intere.

1 per la risposta № 5

intero è una busta di classe attorno alla Java Tipo primitivo int. Non sono la stessa cosa. È necessario utilizzare INT invece di Integer, a meno che tu non abbia un motivo valido (come ArrayList<Integer> list;

Leave a Comment

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *