[Lesson22] Kotlin - Null检查机制

Kotlin的空值安全设计,对於宣告可为空值的参数,在使用时要进行空值判断处理,有两种处理方式:

  1. 字段後加!!像Java一样抛出空值异常
  2. 字段後加?可不做处理返回值为null或配合?:做空值判断处理
//类型後面加?表示可为空值
var age: String? = "2%"

//抛出空值异常
val age1 = age!!.toInt()

//不做处理返回 null
val age2 = age?.toInt()

//age为空值返回-1
val age3 = age?.toInt() ?: -1

当引用可能为null值的时候, 对应的类型宣告必须明确的标记可为null

// 当 str 中的字串内容不是整数时, 返回null
fun parseInt(str: String): Int? {
  // ...
}

使用返回值可为null的函数:

fun main(args: Array<String>) {
  if (args.size < 2) {
    print("Two integers expected")
    return
  }
  val x = parseInt(args[0])
  val y = parseInt(args[1])
  
  // 直接使用 `x * y` 会出现错误, 因为可能为null
  if (x != null && y != null) {
    // 进行过null值检查後, x 和 y 的类型会被自动转换为非null
    print(x * y)
  }
}

谢谢大家愿意花时间阅读,小弟弟我在此鞠躬/images/emoticon/emoticon41.gif


<<:  What is Vuex?

>>:  Day22-大量图片的页面(下)_利用hover搞点漂亮的

找LeetCode上简单的题目来撑过30天啦(DAY18)

我越来越懂linklist了(应该吧?),可喜可贺 题号:21 标题:Merge Two Sorte...

【Day1】: STM32前言

教学宗旨 这个教学是for第一次接触STM32的人,对於已经能够熟练使用STM32的大大可能帮助不大...

10 有局数就可以打分数

昨天做到双方都出卡後,增加 turn 数 现在在做 每到 3 turn 换一局 round + 1 ...

【第七天 - 常见文件泄漏】

Q1. 常规文件是什麽? 网页专案中,有许多工程师惯用的文件命名方式,这些文件可能暗藏网页的相关资讯...

Day 9 - 用 canvas 复刻 小画家 曲线

曲线 曲线有以下几种方法 quadraticCurveTo quadraticCurveTo 是 C...