val — read-only ссылка (нельзя переназначить), var — изменяемая ссылка; у val объект всё ещё может быть mutable (например MutableList).
Разбор
val list = mutableListOf(1) — ссылку менять нельзя, содержимое — можно.
- Предпочитайте
val по умолчанию.
const val — compile-time константа на top-level/object.
- В data class чаще
val для иммутабельности.
Итог
Immutability через val упрощает рассуждения о состоянии в Android.