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

代码示例

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

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值