zoukankan      html  css  js  c++  java
  • Kotlin学习快速入门(5)——空安全

    介绍

    kotlin中,对象可分为两种类型,可为空的对象和不可为空对象

    默认为不可为空对象,代码检测如果发现不可为空对象赋予了null,则会标红报错。

    可为空的对象,如果调用了方法,代码检测也会标红报错

    var s: String = "hello" //不可为空
    s = null//标红报错
    
    var s: String? = "hello"
    s=null //代码检测通过
    println(s.length)//标红报错
    

    调用可为空对象的属性或方法

    这样的好处就是,如果我们有一个对象一定是不为空的,那么我们可以直接调用它的方法而不会出现空指针错误。

    但如果我们需要调用一个可为空的对象的属性,怎么做呢?

    上面我们知道,如果一个可为空的对象调用方法,代码检测会标红报错,所以,kotlin中就提供了几个方法供我们调用可为空对象的属性或方法

    1. 使用判空条件 if(xx !=null)

    var s: String? = "hello"
    if(s!=null){
    	println(s.length)
    } 
    

    2. 使用安全调用 ?.

    使用?.,如果对象为空,则会得到null,但程序不会停止

    支持链式调用,当某处对象为空,则返回null

    var s: String? = "hello"
    println(s?.length) //s为空,则返回null,否则返回s.length
    println(s?.length+1) //这里代码检测会报错
    println(s?.length?.plus(1)) //修改之后的,通过代码检测
    

    3. Elvis操作符 ?:

    val date = 表达式1 ?: 表达式2

    如果表达式1为null,则返回表达式2返回的内容

    val l: Int = if (b != null) b.length else -1
    
    //相当于上面的代码
    //如果b为空,则返回l=-1,b不为空,l=b.length
    val l = b?.length ?: -1
    

    4. !!

    对象为空,编译通过(代码提示不报错),但运行时候抛出空指针异常

    var s: String = null
    pritnln(s!!.length) //运行时候回报错
    
  • 相关阅读:
    软件开发基本原则(四)—— 风险管理 (转)
    软件开发基本原则(三)—— 基本原则 (转)
    人心散了,项目必然要败! (转)
    项目失败的若干征兆
    项目管理思考——角色转变
    软件开发基本原则(二)—— 典型错误 (转)
    项目管理思考——我适合做项目经理吗
    flex 学习篇 导航类容器
    mfc 中在 dc中 显示 位图
    第一次作业 黎娜 2013551605
  • 原文地址:https://www.cnblogs.com/stars-one/p/11293726.html
Copyright © 2011-2022 走看看