kotlin --- 变量和常量区别、空安全

变量

什么是变量?

用于存储数据。变量的数据类型是不可以被修改的,但是变量所存储的数据是可以被修改的。

创建变量

主要分为两个步骤:定义变量 和 初始化变量

语法如下:

var 变量名: 数据类型 = 值

tips:

1、当变量声明为类属性时,变量必须进行初始化赋值,否则编译器报错。
2、当变量声明在局部方法内时,当变量被使用时需要先进行初始化赋值,否则编译器也会报错

3、Kotlin编译器可以通过等号右边值的类型直接推断出等号左边变量的类型,所以变量的类型是可以被省略。如果没有为变量赋值,则变量的数据类型是不能被省略的

常量

什么是常量?

 是用来存储数据的,但不同的是常量的数据类型和数据都不可以被修改,可以叫做只读变量,或者值变量(value)

语法如下:

val 变量名: 数据类型 = 值

tips:

1、当常量声明为类属性时,变量必须进行初始化赋值,否则编译器报错。

2、定义常量值,确保只初始化赋值一次,否则编译器报异常。

3、同样Kotlin编译器可以通过等号右边值的类型直接推断出等号左边变量的类型,所以常量的类型是可以被省略

空安全

        在java中,用对象需要判空,如果对象出现空的情况,会报NullPointerException。

 Kotlin 提供了严格的可为 null 规则,旨在从我们的代码中消除 NullPointerException,默认情况下,对象的引用不能包含 null 值。

使用

我们创建的所有变量都是不允许为空的,必须给其指定一个值,如果给它赋值为 null,就会报错

class NullTest {
    var str: String = null//出错,默认情况下不能为空

    var name:String ="hahahahaha"

    fun assignNull(){
        name = null //出错,不能赋值为空
    }
}

这就引出来  ?     ?.    ?:    !!    as?

某些情况下我们允许允许为空的变量,那么这时候就需要 ?的加持变为可空类型。如下:

var btn: Button? = null

怎么在空安全中使用btn呢?

三种方式:

第一种 ?.     btn?.text = "aaaaaa"

这个写法同样会对变量做一次非空确认之后再调用方法,并且它可以做到线程安全,这种写法叫做 Safe Call。

第二种 !!   btn!!.text = "aaaaaa"

这种写法叫做 non-null asserted call,即非空断言,如果为空的情况则会抛出异常,因此慎用。

第三种 ?:   btn?.text ?: "error"

Elvis 操作符能够大大简化 if-else 表达式。

第四种 as?   

fun main() {
    var str = "string"
    val num: Int? = str as? Int
    println(num)
    //输出 null
}

使用 as 关键字来进行类型转换,如果对象不是目标类型,那么类型转换可能会导致 ClassCastException。这时哦我们选择 as? ,如果尝试转换不成功则会返回 null

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值