Kotlin学习笔记(四)--空指针检查


前言:
空指针异常是Android系统上崩溃率非常非常高的异常类型,主要是因为空指针是一种不受编程语言检查的运行时异常,只能由程序员主动通过逻辑判断避免,但即使是最出色的程序员,也不可能将所有潜在的空指针异常全部考虑到。然而,kotlin却非常科学地解决了这个问题。它利用编译时判空检查机制几乎杜绝了空指针异常。

1. 可空类型系统

下面我们先来看一段代码:

fun doStudy(study:Study){
   
	study.readBookd()
	study.doHomework()
}

上述代码会有空指针风险吗?答案是没有。因为kotlin默认所有的参数和变量都不可为空,如果你尝试向doStudy()方法传入一个null参数,则会直接编译报错,因为Kotlin将空指针异常检查提前到了编译期。
那如果我们的业务逻辑就是需要某个变量或者参数为空怎么办呢?kotlin为我们提供了另一套可空的系统类型,只不过在使用这种类型时,我们需要在编译期就将所有潜在的空指针异常都处理掉,否则无法通过编译。
何为可为空的系统类型?就是在类名后面加上一个问号。比如String表示不可为空的字符串,而String?就表示可为空的字符串。现在回到刚才的例子:

fun main(){
   
	doStudy(null)
}

fun doStudy(study:Study?){
   
	study.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值