Kotlin学习(五) --空安全

空安全

在今天的学习中,学了一下kotlin的优势点–空安全,记得以前在java学习中,有时候忘了考虑如果这个东西为空,在Java中,如果我们尝试访问一个空引用的成员可能就会导致空指针异常,还要不断的写if else判断是不是为空,在kotlin的优势里面,这个空安全就很厉害了哈

在kotlin里面他把变量分成二类,很直观的解决了空指针问题,在定义变量的时候就搞定
1.永远都不可能为空的变量
2.可能为空的变量

定义可能为空的变量方法

格式: var/val 变量名 ?= 值 在这里?表示可能为空

fun main(args: Array<String>) {
    var s:Int?=22
    var ss:Int=11

    s = null  //这里是可以的

    ss = null //这一行就报错了

}

判断可空类型的变量是否为空的方法

1.if else方法 //这个是最简单的方式

    var s:Int?=22

    s = null  

   if(s==null){
        println("变量为空")
    }else{
        println("变量不为空")
    }

2.使用符号?.判断
该符号的用法为:可空类型变量?.属性/方法。如果可空类型变量为null时,返回null

fun main(args: Array<String>) {
    var str : String? = "笑笑"
    str = null
    println(str?.length)   
}

结果是 null

3.、函数中使用可空类型的情况下
当一个函数/方法有返回值时,如果方法中的代码使用?.去返回一个值,那么方法的返回值的类型后面也要加上?符号

fun ss():Int?{
        val str : String? = "笑笑"
        return str?.length

}

其他的关于空安全的运算符

let操作符

let操作符的作用:当时用符号?.验证的时候忽略掉null
格式:变量?.let{ … }
去除数组中的空

val s: Array<Int?> = arrayOf(1,2,null,3,null,5,6,null)
for (index in s) {
    index?.let { println("index => $it") }

结果:
index => 1
index => 2
index => 3
index => 5
index => 6

?:操作符

当我们定义了一个可空类型的变量时,如果该变量不为空,则使用,反之使用另外一个不为空的值
格式:变量 = 数值A?:数值B
如果这个数值A不为空 则 变量等于数值A
如果为空 则 变量等于数值B

val s : String? = null

var length = 0

length = s?.length ?: -1

println(length)

输出结果为-1

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 经导师精心指导并认可、获 98 分的毕业设计项目!【项目资源】:微信小程序。【项目说明】:聚焦计算机相关专业毕设及实战操练,可作课程设计与期末大作业,含全部源码,能直用于毕设,经严格调试,运行有保障!【项目服务】:有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值