kotlin中val和var的区别【笔记感悟】
程序员文章站
2022-05-28 14:30:52
...
代码示例
分别用var和val初始化两个值
var i:Int=6;
val j:Int=10;
看起来没什么问题,但是在使用的时候问题就来了,如下代码:
var i:Int=6;
val j:Int=10;
//重新给i 和 j 赋值
i=100;
j=300;//此处会编译报错,此处由于CSDN代码块的问题看不出来,实际情况见下图
看见了,使用val初始化的值 j 再次赋值时编辑器(IDEA或者Android Studio)编译报错,这次测试就能看出
使用 val 初始化的值不可修改,使用 var 初始化的值可以修改,也就是说 val 是只读,而 var 可读可修改
把val看做常量,var看做变量就很好理解了
还有个有趣的情况,如下
在创建类的构造函数时:
如上图所示,在构造函数中未使用val和var初始化参数,那么在这个类中的其他成员是无法使用构造函数接收到的参数的。但是类初始化块init中可以使用,如下:
如何使类中其他成员使用构造函数接收到的参数呢?如下代码
class TestClass constructor(val num1:Int,var msg:String){
init {//类初始化块
val paramsAdd:Any=msg+num1;
}
fun paramsAdd():Any{
return msg+num1;
}
}
编辑器效果图:
在构造函数中造成这种原因是因为如果没有使用val或者var来定义参数的话,那么构造函数不会去声明和初始化接收到的参数(尽管是在类构造函数中),所以在构造函数的参数使用val或者是var定义后其他成员就可以使用了,但同样的遵守val只读和var可读可写。
上一篇: Kotlin学习之开发环境配置