Compararea obiectelor întregi vs Int – Java

Am fixat o buclă nesfârșită prin schimbarea întregului la int în următoarele:

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++;}}}

Care este motivul potrivit pentru acest lucru? Am crezut că întregul număr nu ar compara nici o problemă.

Mulțumesc.

Răspunsuri:

17 pentru răspunsul № 1

pentru că atunci când faci! = Compararea în obiect, comparați referințele. Iar referințele dintre două obiecte în general sunt diferite.

Atunci când intrările sunt comparate, primitivii sunt întotdeauna comparați, să spunem nici o referire (fără obiecte), ci valori.

Prin urmare, dacă doriți să lucrați cu întreg, trebuie să faceți acest lucru Utilizați egali () în ele.

În plus, dacă valorile dvs. sunt între 0 și 255, comparația dintre numere întregi funcționează bine, datorită caching-ului.

Puteți citi aici: http://download.oracle.com/javase/tutorial/java/data/numberclasses.html

6 pentru răspunsul № 2

Integer este un Object, iar obiectele sunt comparate cu .equals(..)

sunt doar comparați primitivi cu ==

că este regula, în afară de unele cazuri excepționale, unde == poate fi folosit pentru a compara obiectele. Dar chiar și atunci nu este recomandabil.

2 Pentru răspunsul № 3

Problema este că întregul este o clasă și, astfel, chiar și comparația este făcută ca și pentru orice altă clasă, folosind metoda .equals () (). Dacă o comparați cu ==, comparați referințele care sunt întotdeauna diferite pentru două cazuri diferite. Tipul primitiv int nu este o clasă, ci un tip Java încorporat și comparația este manipulată în special de compilator și de lucrări conform așteptărilor.

2 pentru răspunsul № 4

Puteți utiliza Integer.intValue () pentru a obține valoarea int pentru comparație, dacă într-adevăr trebuie să utilizați Integer.

1 pentru răspunsul № 5

Integer este un plic de clasă în jurul Java tip primitiv int. Nu sunt același lucru. Trebuie să utilizați int în loc de integer, cu excepția cazului în care aveți un motiv valid (cum ar fi ArrayList<Integer> list;

Leave a Comment

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *