var keywords in Kotlin are used to declare variables.
The only difference between the keywords is that the value of
var keyword can be re-assigned while
To illustrate the difference, consider the following example:
var myNum = 15 myNum = 20
In the above example, the variable
myNum has the initial value of
15 which is then changed to
When you use the
val keyword to declare the variable, the re-assignment will trigger an error:
val myNum = 15 myNum = 20 // Error: Val cannot be reassigned
But although you can’t change the value of
val variables, the properties of the variable can still be changed if the variable type is an object.
For example, suppose you have a
Member class with a
name property as follows:
class Member(var name: String) val user = Member("Nathan") user.name = "Jack"
Even though the
user object is declared using the
val keyword, the
name property of the
user object can still be changed.
But this is because the
name property is defined using the
var keyword. If you use the
val keyword for the property, then changing the property will trigger the same error:
class Member(val name: String) val user = Member("Nathan") user.name = "Jack" // Error: Val cannot be reassigned
To conclude, any variable declared using
val is immutable (cannot be reassigned) while
var variables are mutable (can be reassigned)
When your variable is an object, the keyword used to declare any property will determine if the property can be reassigned.