Kotlin中的变量,与Java的差异:'var'与'val'?

Nav*_*sal 14 java android kotlin

我正在努力学习Kotlin.是什么 val,varinternalKotlin相比,Java?

在Java中:

 RadioGroup radioGroup;
 RadioButton button;
 Button submit;
Run Code Online (Sandbox Code Playgroud)

转换后显示:

 internal var radioGroup: RadioGroup
 internal var button: RadioButton
 internal var submit: Button
Run Code Online (Sandbox Code Playgroud)

zsm*_*b13 32

val并且var是可用于声明变量(和属性)的两个关键字.不同之处在于using val为您提供了只读变量,这与final在Java中使用关键字相同.

var x = 10    // int x = 10;
val y = 25    // final int y = 25;
Run Code Online (Sandbox Code Playgroud)

val随时随地使用是Kotlin的惯例,var如果你知道你将在某个地方改变它的价值,你应该只做一些事情.

请参阅有关定义局部变量声明属性的官方文档.


internal是Java中不存在的可见性修饰符.它标记了一个类的成员,该类只在其所在的模块中可见.这与packageJava中默认可见性为您提供的类似可见性(这就是转换器在转换具有package可见性的成员时将使用它的原因).但是,它并不完全相同.此外,请注意,它不是Kotlin中的默认可见性,默认情况下,Kotlin中的类及其成员public.

有关visiblity修饰符的文档中有更多内容.


cha*_*l03 11

val :不可变数据变量

var :可变数据变量

将Java代码转换为Kotlin时:

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

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

有关更多信息varvar阅读本文,internal请阅读此内容.