O que é val em Kotlin?

A palavra-chave val em Kotlin serve para declarar variáveis somente leitura, ou seja, uma vez que você atribui um valor a ela, não dá pra mudar depois. É como se fosse uma constante local — você define o valor e pronto, ele fica fixo dali em diante.

Se você já programou em Java, pode pensar no val como o equivalente ao final. A diferença é que em Kotlin, usar val é muito mais natural e incentivado pela própria linguagem.

Por que usar val?

A grande sacada de usar val é tornar o código mais previsível e seguro. Quando você garante que um valor não vai mudar, fica muito mais fácil de entender o que tá acontecendo no programa. Menos bugs, menos dor de cabeça.

Na prática, a recomendação da comunidade Kotlin é: sempre comece com val. Só troque pra var se realmente precisar alterar o valor depois.

Exemplo prático

fun main() {
    val nome = "Kotlin Brasil"
    val ano = 2026

    println("Bem-vindo ao $nome! Estamos em $ano.")

    // Isso aqui daria erro de compilação:
    // nome = "Outro nome"  // Val cannot be reassigned
}

Perceba que o compilador já infere o tipo automaticamente. O nome é uma String e o ano é um Int, sem precisar declarar isso explicitamente.

val não significa imutável em tudo

Um ponto importante: val garante que a referência não muda, mas o conteúdo do objeto pode mudar. Por exemplo, se você declara uma lista mutável com val, não pode reatribuir a variável, mas pode adicionar itens na lista.

val frutas = mutableListOf("Manga", "Acerola")
frutas.add("Goiaba") // Funciona!
// frutas = mutableListOf("Banana") // Erro! Não pode reatribuir

Essa distinção é fundamental pra quem tá começando com Kotlin. Usar val sempre que possível é uma prática que vai deixar seu código mais limpo e confiável.