Skip to content

Latest commit

 

History

History
129 lines (92 loc) · 3.55 KB

7.md

File metadata and controls

129 lines (92 loc) · 3.55 KB

Kotlin 类型转换

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

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

在 Kotlin 和 Java 中进行类型转换

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

例如:

Java:

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

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

Kotlin:

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

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

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

val num1: Int = 101
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类型。

简单类型转换实例

/**
 * created by Chaitanya for Beginnersbook.com
 */
package beginnersbook

fun main(args : Array<String>){

    /**
     * Double to int type casting
     */
    println("4.554 to int: " + (4.554.toInt()))

    /**
     * int to Char type casting
     */
    println("66 to Char: " + (65.toChar()))

    /**
     * Char to int type casting
     */
    println("B to int: " + ('B'.toInt()))
}

输出:

Kotlin Type Casting

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

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

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

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

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

输出:

Number num1 is: 5453448989999998988
Number num2 is: 2041161740

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

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

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

输出:

Number num1 is: 5453448
Number num2 is: 5453448