Avatar ·

¿Cuál es la diferencia entre var y val en Kotlin? ¿Cuándo usar cada uno?

¡Hola a todos! Acabo de empezar a aprender Kotlin después de Java y estoy confundido con la declaración de variables. En Kotlin hay dos palabras clave: var y val. Entiendo que ambas se usan para crear variables, pero no logro captar cuándo aplicar una y cuándo la otra.

En Java estoy acostumbrado a que las variables siempre son mutables, a menos que se especifique final. Y aquí es al revés: parece que val se usa más a menudo, pero no entiendo por qué.

Aquí hay un ejemplo de mi código que me confunde:

fun main() {
    var name = "Anna"
    name = "María"  // funciona
    
    val city = "Moscú"
    // city = "San Petersburgo"  // ¡error de compilación!
    
    var count = 0
    count = count + 1  // funciona
    
    val maxCount = 100
    // maxCount = 200  // ¡error!
}

He leído que val es una referencia inmutable (como final en Java), y var es mutable. Pero no me queda del todo claro.