Integer în Java

Clasa wrapper pentru int: obiectul care învelește un număr întreg, plus constante și metode de conversie.

Sintaxă
public final class Integer extends Number implements Comparable<Integer>, Constable, ConstantDesc
static final int MAX_VALUE = 2147483647
static final int MIN_VALUE = -2147483648

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ă Integer cu ==. Pentru valori între -128 și 127 pare să meargă (Java refolosește aceleași obiecte), dar pentru 1000 compari obiecte diferite și primești false. Folosește equals sau intValue().
  • Faci unboxing pe un Integer care este null, de exemplu int n = map.get("Radu");: primești NullPointerException.
  • Calculezi sume mari (de exemplu bani în bani) cu int și treci de 2,1 miliarde fără să observi. Folosește long sau Math.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.