Kotlin null 安全性是一种从代码中消除空引用风险的程序。如果Kotlin编译器发现在不执行任何其他语句的情况下传递了任何null参数,则会立即引发NullPointerException。
Kotlin的类型系统旨在消除代码中的NullPointerException。 NullPointerException仅可能由于以下原因:
Kotlin类型系统区分可以包含null(可为空的引用)和不能包含null(非空引用)的引用。通常,String的类型不能为空。要使字符串包含空值,无涯教程必须通过?来明确定义它们。后面的字符串为:String?
Nullable类型通过放置 ? 来声明。在字符串后面为:
var str1: String? = "hello" str1 = null//ok
Kotlin Nullable类型示例
fun main(args: Array<String>){ var str: String? = "Hello"//变量被声明为可为空 str = null print(str) }
输出:
null
Non nullable类型是普通字符串,它们声明为String类型,如下所示:
val str: String = null//编译错误 str = "hello"//编译错误 Val 不能被重新分配 var str2: String = "hello" str2 = null//编译错误
当无涯教程为不可为空的字符串分配空值时会发生什么.
fun main(args: Array<String>){ var str: String = "Hello" str = null//编译错误 print(str) }
输出:
它会生成编译时间错误。
Error:(3, 11) Kotlin: Null can not be a value of a non-null type String
Kotlin的If表达式用于检查条件并返回值。
fun main(args: Array<String>){ var str: String? = "Hello" //变量被声明为可为空 var len = if(str!=null) str.length else -1 println("str is : $str") println("str length is : $len") str = null println("str is : $str") len = if(str!=null) str.length else -1 println("b length is : $len") }
输出:
str is : Hello str length is : 5 str is : null b length is : -1
祝学习愉快!(内容编辑有误?请选中要编辑内容 -> 右键 -> 修改 -> 提交!)