Int.MAX_VALUE în Kotlin

Cea mai mare valoare pe care o poate ține un Int (2147483647); MIN_VALUE este cea mai mică.

Sintaxă
const val Int.Companion.MAX_VALUE: Int = 2147483647
const val Int.Companion.MIN_VALUE: Int = -2147483648
Long.MAX_VALUE, Double.MAX_VALUE, Int.SIZE_BITS

Ce face Int.MAX_VALUE

Un Int ocupă 32 de biți și poate ține numere între Int.MIN_VALUE (-2147483648) și Int.MAX_VALUE (2147483647), adică aproximativ ±2,1 miliarde. Fiecare tip numeric are constantele lui: Long.MAX_VALUE (aproximativ 9,2 × 1018), Byte.MAX_VALUE (127), Double.MAX_VALUE.

Dacă un calcul depășește limita, rezultatul „se dă peste cap” fără nicio eroare: Int.MAX_VALUE + 1 devine Int.MIN_VALUE. Pentru sume mari folosește Long, iar dacă vrei o excepție la depășire, Math.addExact(a, b).

Int.MAX_VALUE se folosește și ca valoare de pornire când cauți un minim („orice număr real va fi mai mic”).

Ce returnează

Constante de tipul respectiv.

Exemple

Exemplul 1: Limitele tipurilor numerice

Fiecare tip are propriul interval de valori.

fun main() {
    println("Int: ${Int.MIN_VALUE} .. ${Int.MAX_VALUE}")
    println("Long: ${Long.MIN_VALUE} .. ${Long.MAX_VALUE}")
    println("Byte: ${Byte.MIN_VALUE} .. ${Byte.MAX_VALUE}")
    println("Biți într-un Int: ${Int.SIZE_BITS}")
}

Rezultat

Int: -2147483648 .. 2147483647
Long: -9223372036854775808 .. 9223372036854775807
Byte: -128 .. 127
Biți într-un Int: 32

Exemplul 2: Depășirea limitei

Adunarea trece peste maxim și dă un număr negativ. Cu Long rezultatul este corect, iar Math.addExact semnalează problema.

fun adunaUnu(n: Int) = n + 1

fun main() {
    val maxim = Int.MAX_VALUE
    println(adunaUnu(maxim))
    println(maxim.toLong() + 1)
    try {
        println(Math.addExact(maxim, 1))
    } catch (e: ArithmeticException) {
        println("Eroare: ${e.message}")
    }
}

Rezultat

-2147483648
2147483648
Eroare: integer overflow

Exemplul 3: Valoare de pornire pentru minim

Pornim de la cel mai mare Int posibil, așa că primul preț îl înlocuiește sigur.

fun main() {
    val preturi = mapOf("Iași" to 2499, "Cluj" to 2399, "Brașov" to 2450)
    var minim = Int.MAX_VALUE
    var magazin = ""
    for ((m, p) in preturi) {
        if (p < minim) {
            minim = p
            magazin = m
        }
    }
    println("Cel mai mic preț: $minim lei, la magazinul din $magazin")
}

Rezultat

Cel mai mic preț: 2399 lei, la magazinul din Cluj

Greșeli frecvente

  • Aduni sume mari (de exemplu salarii în bani) într-un Int și primești un rezultat negativ. Folosește Long.
  • Calculezi Int.MAX_VALUE + 1 și aștepți o eroare. Kotlin nu verifică depășirea la rulare; folosește Math.addExact dacă ai nevoie.

Comenzi înrudite

  • Int.toDouble: Conversii explicite între tipurile numerice: toDouble face un Int zecimal, toInt taie zecimalele unui Double.
  • Double.isNaN: Verifică dacă un Double este NaN („nu este număr”), rezultatul unor calcule ca 0.0 / 0.0 sau sqrt(-1.0).
  • Int.countOneBits: Numără câți biți de 1 are un număr în scrierea binară (de exemplu 7 = 111 are 3).