Avatar ·

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?