val объявляет неизменяемую (read-only) ссылку. После присвоения значения ей нельзя переприсвоить другое значение.
var объявляет изменяемую (mutable) ссылку. Ее значение можно изменять в течение жизни переменной.
Пример:
kotlin
Использование val предпочтительнее, когда возможно, так как это повышает безопасность кода и часто делает его более предсказуемым.