Avatar ·

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

¡Hola! Acabo de empezar a aprender Kotlin después de Java y me confundí con la declaración de variables. En Java estoy acostumbrado a que las variables se declaren con tipo (int, String) y modificador (final para constantes). En Kotlin, en cambio, veo dos palabras clave: var y val. Leí que val es el análogo de final en Java, y var es una variable mutable normal. Pero en la práctica me surgieron preguntas. Por ejemplo, escribí este código: ```kotlin fun main() { var name = "Anna" name = "María" // esto funciona, todo bien val age = 25 age = 30 // ¡Error! Val cannot be reassigned } ``` Con val está claro: no se puede reasignar. Pero ¿qué pasa si val almacena un objeto, no un primitivo? Por ejemplo: ```kotlin val list = mutableListOf("a", "b") list.add("c") // ¿esto funciona? println(list) // mostrará [a, b, c] ``` ¿Resulta que val no es una constante, sino solo una referencia que no se puede cambiar? ¿O estoy confundiendo algo? También me interesa: ¿cuándo es mejor usar var y cuándo val? ¿Afecta esto al rendimiento?