浅谈Kotlin(六):空安全、空类型

首先非空变量和可空变量的区别:

// name为不可为空的变量, 不能赋值为null ,若有判断 if(name==null) 无意义,因为肯定不为null
var name : String = ""
// role 为可空变量
var role : String? = ""

 

非空变量赋值为Null为报如下错误:

浅谈Kotlin(六):空安全、空类型

 

 

一、判断可空变量是否为null的方式

1、

        var name : String ?= ""
        if (name == null){
            Log.i(Tag,"name==null")
        }else{
            Log.i(Tag, "name!=null")
        }

2、

?.的意思为若name为null 。则返回null

        var name : String ?= "abc"
        Log.i(Tag,"name="+name?.length)

 

二、涉及到返回可空值的函数使用方法,在返回类型后同时加?

var name:String?="abc"

fun getNameLength():String?{
      return name
}

 

三、let操作符

用法:变量?.let{ ... } , 作用为忽略null的情况

例如筛选出一个集合非空的元素集合

常规写法:

    fun logUnNullList(arr:Array<String>):Unit{
        for (item in arr){
            if (arr==null){
                continue
            }else{
                Log.i(Tag,"非空元素为->"+item)
            }
        }
    }

用let操作符写法:

    fun logUnNullList(arr:Array<String>):Unit{
        for (item in arr){
            item?.let {Log.i(Tag,"非空元素为->"+item)  }
        }
    }

 

上一篇:为什么要学Kotlin?Kotlin的未来趋势怎么样?会取代java吗?


下一篇:Kotlin初学者笔记