true și false (Boolean) în Kotlin

Bazele programului Kotlin 1.0

true și false sunt cele două valori ale tipului Boolean, folosite în condiții, comparații și operatori logici.

Sintaxă
val activ: Boolean = true
val gol = false
a && b   // și
a || b   // sau
!a       // negație

Ce face true și false (Boolean)

Tipul Boolean are doar două valori: true (adevărat) și false (fals). Le obții direct sau din comparații: nota >= 5, nume == "Ana", lista.isEmpty(). Condițiile din if, while și when trebuie să fie Boolean: Kotlin nu tratează 0 sau textul gol ca fals.

Operatorii logici sunt && (și), || (sau) și ! (negație). && și || se opresc devreme: dacă partea stângă decide rezultatul, partea dreaptă nu se mai calculează. Există și variantele fără oprire, ca funcții infix: and, or, xor.

Un Boolean? poate fi și null. Nu îl poți pune direct într-un if; compari explicit: if (abonat == true). Din text obții un Boolean cu "true".toBoolean().

Exemple

Exemplul 1: Comparații și operatori logici

Rezultatul fiecărei comparații este true sau false și poate fi salvat într-o variabilă.

fun main() {
    val varsta = 17
    val areBilet = true
    val majora = varsta >= 18
    println("majoră: $majora")
    println("poate intra la film: ${areBilet && (majora || varsta >= 15)}")
    println("fără bilet: ${!areBilet}")
    println("xor: ${majora xor areBilet}")
}

Rezultat

majoră: false
poate intra la film: true
fără bilet: false
xor: true

Exemplul 2: Oprirea devreme a lui && și ||

Când partea stângă a lui && este falsă, funcția din dreapta nu mai este apelată, deci mesajul ei apare o singură dată.

fun verificaStoc(produs: String): Boolean {
    println("  verific stocul pentru $produs")
    return produs != "zahăr"
}

fun main() {
    val produse = listOf("făină" to true, "zahăr" to true, "ulei" to false)
    for ((produs, inMeniu) in produse) {
        val disponibil = inMeniu && verificaStoc(produs)
        println("$produs disponibil: $disponibil")
    }
}

Rezultat

  verific stocul pentru făină
făină disponibil: true
  verific stocul pentru zahăr
zahăr disponibil: false
ulei disponibil: false

Exemplul 3: Boolean? și text transformat în Boolean

Un Boolean? se compară cu == true. toBoolean() dă true doar pentru textul „true” (fără să conteze literele mari).

fun main() {
    val raspunsuri: Map<String, Boolean?> = mapOf("Ana" to true, "Dan" to null, "Ioana" to false)
    for ((nume, abonat) in raspunsuri) {
        val text = if (abonat == true) "primește newsletter" else "nu primește"
        println("$nume: $text")
    }
    println("TRUE".toBoolean())
    println("da".toBoolean())
}

Rezultat

Ana: primește newsletter
Dan: nu primește
Ioana: nu primește
true
false

Greșeli frecvente

  • if (n) cu n număr: în Kotlin condiția trebuie să fie Boolean, scrie if (n != 0).
  • if (abonat) cu abonat: Boolean?: nu compilează. Scrie if (abonat == true).
  • Folosirea lui and/or în loc de &&/||: ele calculează mereu ambele părți, ceea ce poate apela funcții inutil sau poate da NullPointerException.

Comenzi înrudite

  • if și else: Execută un bloc doar dacă o condiție este adevărată; în Kotlin if este și expresie, deci întoarce o valoare.
  • when: Alege o ramură după valoarea unei expresii sau după prima condiție adevărată; înlocuiește switch din alte limbaje.
  • null și null safety (?. ?: !!): null înseamnă „nicio valoare”. Kotlin separă tipurile care acceptă null (String?) și oferă ?., ?: și !! pentru ele.