kotlin中val和var的区别【笔记感悟】

版权声明:本文为博主原创文章,转载请注明出处!有时候也不是原创,手快就选了(我的文章随意转载复制,不在乎的哈!) https://blog.csdn.net/qq_31384551/article/details/82699276

代码示例

分别用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可读可写。

猜你喜欢

转载自blog.csdn.net/qq_31384551/article/details/82699276