En Kotlin se utiliza val y var para conseguir que nuestras variables sean de solo lectura o mutables respectivamente.

En Java a las variables de solo lectura, a las se le puede asignar el valor solo una vez, se consiguen indicando que son final mientras que para las mutables no se tienen que indicar explícitamente. Esto provoca que los programadores utilicen variables mutables por defecto, ya que es más cómodo no escribir nada que escribir final.

Veamos como escribiríamos una variable inmutable en Java:

final string text = "Hello, World"
text = "Other text" // Error

Para conseguir ese comportamiento en Kotlin se utiliza val. El propio lenguaje te incita a que utilices la inmutabilidad por defecto a menos que sea indispensable que algo se tenga que modificar en algún momento.

En el caso de que quieras que algo se pueda reasignar, tienes que utilizar var.

Hay otras formas de expresar inmutabilidad y mutabilidad en Kotlin, por ejemplo en las listas utilizando listOf o mutableListOf respectivamente. Aunque se hable de otros temas, aquí puedes ver unos ejemplos de ello.

Enlaces de Interés:

Menú