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)cunnumăr: în Kotlin condiția trebuie să fieBoolean, scrieif (n != 0).if (abonat)cuabonat: Boolean?: nu compilează. Scrieif (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 daNullPointerException.
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.