空安全类型
- 在实际开发中,会经常碰到空值的情况,空值在 Kotlin 中表示为
null
。 - 在 Kotlin 中,默认情况下,不允许将变量或者常量设置为
null
,只有声明成空安全类型才可以。
定义
代码语言:javascript复制// 在类型后面加个?
var str: String? = "Hello Kotlin"
str = null
取值
-
?:
:非空直接返回,为空返回后面的值。
var str: String? = "This is a String"
val ret = str ?: "default value"
println(ret)
str = null
val ret2 = str ?: "default value"
println(ret2)
-
!!
:强制取值,非空直接返回,为空报错。
var str: String? = "This is a String"
val ret = str!!
println(ret)
str = null
val ret2 = str!! // 报错
基本类型
- Kotlin 支持隐式转换即较大的类型可以隐式转换为较小的类型,但反过来较小的类型不能隐式转换为较大的类型。
- 所有数字类型都支持转换为其他类型。
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double
字符串模板
字符串可以包含模板表达式,会求值并把结果合并到字符串中。模板表达式以美元符$
开头。
val str = "Hello"
// 单个值
println("$str world")
// 表达式
println("${str.uppercase()}")
类型判断与转化
- 使用
is
或者!is
在运行时检测对象是否符合给定类型。 - 使用
as
后者as?
进行类型转换,后者返回的是空安全类型。
val str = "Hello Kotlin"
// 类型判断
println(str is String)
println(str !is String)
// 类型转换
str as Int // 运行时报错
str as? Int