Variables in Kotlin, differences with Java: 'var' vs. 'val'?
val
: immutable data variable
var
: mutable data variable
When you converted your Java code to Kotlin:
A converter found that you have not initialised variables, so it made them
var
(mutable) as you will initialise them later.Probably your variables are unused, so the converter made them internal, guessing you will not use them outside of your package.
For more information on var
and var
read this, and for internal
read this.
val
and var
are the two keywords you can use to declare variables (and properties). The difference is that using val
gives you a read-only variable, which is the same as using the final
keyword in Java.
var x = 10 // int x = 10;
val y = 25 // final int y = 25;
Using val
whenever you can is the convention in Kotlin, and you should only make something a var
if you know that you'll be changing its value somewhere.
See the official documentation about defining local variables and declaring properties.
internal
is a visibility modifier that doesn't exist in Java. It marks a member of a class that will only be visible within the module it's in. This is a similar visibility to what the default package
visibility gives you in Java (which is why the converter would use it when converting members with package
visibility). However, it's not exactly the same. Also, note that it's not the default visibility in Kotlin, classes and their members in Kotlin are public
by default.
There is more in the documentation about visiblity modifiers.