Kotlin中的变量,与Java的区别。 var vs val?

我正在努力学习Kotlin,我想知道什么是Val,Var和内部
在与java相比kotlin。

在java中: –

RadioGroup radioGroup; RadioButton button; Button submit; 

转换后显示: –

  internal var radioGroup: RadioGroup internal var button: RadioButton internal var submit: Button 

valvar是你可以用来声明变量(和属性)的两个关键字。 不同的是,使用val给你一个只读变量,这和在Java中使用final关键字是一样的。

 var x = 10 // int x = 10; val y = 25 // final int y = 25; 

只要你愿意,使用val就是Kotlin中的约定,如果你知道你将会在某个地方改变它的值,那么你应该只做一个var

查看关于定义局部变量和声明属性的官方文档。


internal是一个在Java中不存在的可见性修饰符,它标记一个类的成员,它只会在它所在的模块中可见。这与Java中缺省package可见性给出的类似性是可见的(这就是为什么转换器会在使用package可见性转换成员时使用它),但它不完全相同。 此外,请注意,这不是Kotlin中的默认可见性,Kotlin中的类和其成员是默认public的。

更多关于visiblity修饰符的文档。

val :不可变的数据变量

var :可变数据变量

当您将java代码转换为kotlin时:

  1. 转换器发现你没有初始化变量,所以它会使它们变成var (可变的),因为你稍后将会初始化它们。

  2. 可能你的变量是未使用的,所以转换器使他们内部猜测你不会在你的包之外使用它们。

有关varvar更多信息,请阅读本文 ,并在internal阅读本文 。