原文: https://beginnersbook.com/2018/09/kotlin-type-conversion/

类型转换是将一种数据类型转换为另一种类型的过程,例如 - 将int转换为longlong转换为double等。在教程中,我们将学习如何在 Kotlin 中执行类型转换。

在 Kotlin 和 Java 中进行类型转换

在 java 中,一种类型会自动转换为其他类型(在某些情况下),在 Kotlin 中我们需要显式转换类型。

例如:

Java:

Int自动转换为Long数据类型,因为long大于int

  1. // This code is valid in Java, even though we are converting int to long
  2. // because long is larger than int and it can hold integers
  3. int num1 = 101;
  4. long num2 = num1;

Kotlin:

在 Kotlin 中转换不是自动的,我们需要明确地进行类型转换。

  1. // This code is invalid in Kotlin. This will cause compile time
  2. // error, type mismatch
  3. val num1: Int = 101
  4. val num2: Long = num1

Kotlin 中的正确代码:
我们使用toLong()函数在 Kotlin 中将int转换为long

  1. val num1: Int = 101
  2. val num2: Long = num1.toLong()

更多 Kotlin 中的类型转换函数

在上面的例子中,我们已经看到我们如何使用toLong()函数将整数转换为Long类型。同样,我们在 Kotlin 中有其他功能可以帮助我们进行类型转换。

  1. toChar() - 将类型转换为Char类型。
  2. toInt() - 将类型转换为Int类型。
  3. toLong() - 将类型转换为Long类型。
  4. toFloat() - 将类型转换为Float类型。
  5. toDouble() - 将类型转换为Double类型。
  6. toByte() - 将类型转换为Byte类型。
  7. toShort() - 将类型转换为Short类型。

简单类型转换实例

  1. /**
  2. * created by Chaitanya for Beginnersbook.com
  3. */
  4. package beginnersbook
  5. fun main(args : Array<String>){
  6. /**
  7. * Double to int type casting
  8. */
  9. println("4.554 to int: " + (4.554.toInt()))
  10. /**
  11. * int to Char type casting
  12. */
  13. println("66 to Char: " + (65.toChar()))
  14. /**
  15. * Char to int type casting
  16. */
  17. println("B to int: " + ('B'.toInt()))
  18. }

输出:

Kotlin 类型转换 - 图1

当我们将较大的类型转换为较小的类型时会发生什么?

将较大类型转换为较小类型时,我们有两种可能的结果。如果我们转换为较小类型的值超出目标类型的范围,则结果将被截断。但是,当值在目标类型的范围内时,它将被转换而不会被截断。

示例 1:当值超出目标类型的范围时

在这个例子中,我们将long类型转换为int类型,其中long类型的值超出整数类型的范围。

  1. fun main(args : Array<String>) {
  2. val num1: Long = 5453448989999998988
  3. val num2: Int = num1.toInt()
  4. println("Number num1 is: $num1")
  5. println("Number num2 is: $num2")
  6. }

输出:

  1. Number num1 is: 5453448989999998988
  2. Number num2 is: 2041161740

示例 2:当值在目标类型的范围内时

在这个例子中,我们将long类型转换为int类型,其中long类型的值在整数类型的范围内。

  1. fun main(args : Array<String>) {
  2. val num1: Long = 5453448
  3. val num2: Int = num1.toInt()
  4. println("Number num1 is: $num1")
  5. println("Number num2 is: $num2")
  6. }

输出:

  1. Number num1 is: 5453448
  2. Number num2 is: 5453448