Ce face Integer
Integer este varianta obiect a tipului primitiv int. Colecțiile (List, Map) nu pot ține tipuri primitive, așa că un int pus într-o listă devine automat Integer (autoboxing), iar la citire se transformă înapoi (unboxing). Spre deosebire de int, o variabilă Integer poate fi null.
Integer.MAX_VALUE (2147483647) și Integer.MIN_VALUE (-2147483648) sunt limitele unui int, care ocupă 32 de biți. Dacă un calcul trece de limită, rezultatul „se întoarce” la capătul opus fără nicio eroare (overflow). Pentru numere mai mari folosește long.
Clasa mai are metode statice utile: parseInt (text → număr), toString, toBinaryString, compare, max, sum.
Ce returnează
MAX_VALUE este o constantă int: 231 − 1 = 2147483647.
Exemple
Exemplul 1: Limitele lui int și overflow
Adunând 1 la valoarea maximă obținem valoarea minimă. Cu long calculul este corect.
public class Main {
public static void main(String[] args) {
System.out.println(Integer.MAX_VALUE);
System.out.println(Integer.MIN_VALUE);
int mare = Integer.MAX_VALUE;
mare = mare + 1;
System.out.println(mare);
long corect = Integer.MAX_VALUE + 1L;
System.out.println(corect);
}
}
Rezultat
2147483647
-2147483648
-2147483648
2147483648
Exemplul 2: MAX_VALUE ca valoare de pornire pentru minim
public class Main {
public static void main(String[] args) {
int[] temperaturi = {12, 8, 15, 6, 10};
int minim = Integer.MAX_VALUE;
for (int t : temperaturi) {
if (t < minim) {
minim = t;
}
}
System.out.println("Cea mai mică temperatură: " + minim + " °C");
}
}
Rezultat
Cea mai mică temperatură: 6 °C
Exemplul 3: Integer în colecții și null
Un Integer poate lipsi (null). Două obiecte Integer se compară cu equals.
import java.util.HashMap;
import java.util.Map;
public class Main {
public static void main(String[] args) {
Map<String, Integer> note = new HashMap<>();
note.put("Ana", 10);
Integer nota = note.get("Ana");
Integer lipsa = note.get("Radu");
System.out.println(nota + " " + lipsa);
Integer a = 1000;
Integer b = 1000;
System.out.println(a.equals(b));
int suma = a + b;
System.out.println(suma);
}
}
Rezultat
10 null
true
2000
Greșeli frecvente
- Compari două
Integercu==. Pentru valori între -128 și 127 pare să meargă (Java refolosește aceleași obiecte), dar pentru 1000 compari obiecte diferite și primeștifalse. FoloseșteequalssauintValue(). - Faci unboxing pe un
Integercare estenull, de exempluint n = map.get("Radu");: primeștiNullPointerException. - Calculezi sume mari (de exemplu bani în bani) cu
intși treci de 2,1 miliarde fără să observi. FoloseștelongsauMath.addExact.
Comenzi înrudite
Integer.parseInt: Transformă un text ca „42” în numărul întreg 42; valueOf face același lucru, dar returnează un obiect Integer.Integer.toString: Transformă un număr întreg în text, în baza 10 sau în orice bază între 2 și 36.Integer.compare: compare() compară două int-uri (negativ, 0, pozitiv); max, min și sum sunt variante scurte pentru referințe la metode.Tipuri wrapper și autoboxing: Fiecare primitiv are o clasă „înveliș” (Integer, Double, Character…); conversia automată între ele se numește autoboxing.Long.parseLong: Long este wrapperul pentru long (întregi pe 64 de biți); parseLong și valueOf transformă textul în număr.