Qual é a diferença entre var e val em Kotlin? Quando usar cada um?
Olá! Comecei a estudar Kotlin depois de Java e fiquei confuso sobre a declaração de variáveis. Em Java, estou acostumado a declarar variáveis com tipo (int, String) e modificador (final — para constantes). Já em Kotlin, vejo duas palavras-chave: var e val.
Li que val é análogo ao final do Java, e var é uma variável mutável comum. Mas na prática, surgiram dúvidas.
Por exemplo, escrevi este código:
```kotlin
fun main() {
var name = "Анна"
name = "Мария" // isso funciona, tudo ok
val age = 25
age = 30 // Erro! Val cannot be reassigned
}
```
Com val está claro — não pode ser reatribuído. Mas e se val armazenar um objeto, não um primitivo? Por exemplo:
```kotlin
val list = mutableListOf("a", "b")
list.add("c") // isso funciona?
println(list) // exibe [a, b, c]
```
Então val não é uma constante, mas apenas uma referência que não pode ser alterada? Ou estou confundindo algo?
Também me interessa: quando é melhor usar var e quando usar val? Isso afeta a performance?