Kotlin-类型转换

2022-05-17 17:23:36 浏览数 (1)

空安全类型

  • 在实际开发中,会经常碰到空值的情况,空值在 Kotlin 中表示为null
  • 在 Kotlin 中,默认情况下,不允许将变量或者常量设置为null,只有声明成空安全类型才可以。

定义

代码语言:javascript复制
// 在类型后面加个?
var str: String? = "Hello Kotlin"
str = null

取值

  • ?::非空直接返回,为空返回后面的值。
代码语言:javascript复制
var str: String? = "This is a String"
val ret = str ?: "default value"
println(ret)

str = null
val ret2 = str ?: "default value"
println(ret2)
  • !!:强制取值,非空直接返回,为空报错。
代码语言:javascript复制
var str: String? = "This is a String"
val ret = str!!
println(ret)

str = null
val ret2 = str!! // 报错

基本类型

  • Kotlin 支持隐式转换即较大的类型可以隐式转换为较小的类型,但反过来较小的类型不能隐式转换为较大的类型。
  • 所有数字类型都支持转换为其他类型。
代码语言:javascript复制
toByte(): Byte
toShort(): Short
toInt(): Int
toLong(): Long
toFloat(): Float
toDouble(): Double

字符串模板

字符串可以包含模板表达式,会求值并把结果合并到字符串中。模板表达式以美元符$开头。

代码语言:javascript复制
val str = "Hello"
// 单个值
println("$str world")
// 表达式
println("${str.uppercase()}")

类型判断与转化

  • 使用is或者!is在运行时检测对象是否符合给定类型。
  • 使用as后者as?进行类型转换,后者返回的是空安全类型。
代码语言:javascript复制
val str = "Hello Kotlin"

// 类型判断
println(str is String)
println(str !is String)

// 类型转换
str as Int // 运行时报错
str as? Int

0 人点赞