跳到主要内容

Kotlin 类型转换

提示
  1. Kotlin 中的显式类型转换:与 Java 不同,Kotlin 不支持自动类型转换,即使是从较小的数据类型到较大的数据类型。例如,Int 类型不会自动转换为 Long 类型。
  2. 使用特定的转换函数:在 Kotlin 中,需要使用特定的函数进行类型转换,例如 toLong()toInt()toFloat() 等,以保证类型安全和防止类型转换错误。
  3. 从较大类型转换为较小类型的潜在问题:当从较大的数据类型转换为较小的数据类型时,可能会发生值截断。例如,从 Int 转换为 Byte 可能会导致数值不准确。

在 Kotlin 中,即使另一种类型更大,一个类型的数值也不会自动转换为另一种类型。这与 Java 处理数字转换的方式不同。例如:

在 Java 中,

int number1 = 55;
long number2 = number1; // 有效代码

这里,类型为 intnumber1 的值自动转换为 long 类型,并赋给变量 number2

在 Kotlin 中,

val number1: Int = 55
val number2: Long = number1 // 错误:类型不匹配。

尽管 Long 的大小比 Int 大,Kotlin 不会自动将 Int 转换为 Long

相反,你需要显式地使用 toLong()(将类型转换为 Long)。Kotlin 这样做是为了类型安全,以避免意外。

val number1: Int = 55
val number2: Long = number1.toLong()

以下是 Kotlin 中用于类型转换的函数列表:

注意,没有对 Boolean 类型的转换。

从较大类型转换为较小类型

上面提到的函数可以双向使用(从较大类型转换为较小类型,以及从较小类型转换为较大类型)。

然而,从较大类型转换为较小类型可能会截断值。例如,

fun main(args : Array<String>) {
val number1: Int = 545344
val number2: Byte = number1.toByte()
println("number1 = $number1")
println("number2 = $number2")
}

运行程序时,输出将会是:

number1 = 545344
number2 = 64

也可以查阅与类型转换相关的这些文章:

  • String 转 Int,以及 Int 转 String 转换
  • Long 转 Int,以及 Int 转 Long 转换
  • Double 转 Int,以及 Int 转 Double 转换
  • Long 转 Double,以及 Double 转 Long 转换
  • Char 转 Int,以及 Int 转 Char
  • String 转 Long,以及 Long 转 String 转换
  • String 转 Array,以及 Array 转 String 转换
  • String 转 Boolean,以及 Boolean 转 String 转换
  • String 转 Byte,以及 Byte 转 String 转换
  • Int 转 Byte,以及 Byte 转 Int 转换