在Kotlin中,即使另一种类型的数值较大,也不会自动将其转换为另一种类型。这与Java处理数字转换的方式不同。例如;
在Java中,
int number1 = 55;
long number2 = number1; // Valid code
在这里, int
类型的number1
的值会自动转换为long
类型,并分配给变量number2 。
在科特林,
val number1: Int = 55
val number2: Long = number1 // Error: type mismatch.
尽管Long的大小大于Int
,但Kotlin不会自动将Int转换为Long 。
相反,您需要显式使用toLong()
(将其转换为Long类型)。 Kotlin这样做是为了确保类型安全以避免意外。
val number1: Int = 55
val number2: Long = number1.toLong()
以下是Kotlin中用于类型转换的函数列表:
-
toByte()
-
toShort()
-
toInt()
-
toLong()
-
toFloat()
-
toDouble()
-
toChar()
注意, Boolean
类型没有转换。
从较大的类型转换为较小的类型
上面提到的功能可以在两个方向上使用(从较大类型到较小类型的转换以及从较小类型到较大类型的转换)。
但是,从较大的类型到较小的类型的转换可能会截断该值。例如,
fun main(args : Array) {
val number1: Int = 545344
val number2: Byte = number1.toByte()
println("number1 = $number1")
println("number2 = $number2")
}
运行该程序时,输出为:
number1 = 545344
number2 = 64
另请查看与类型转换有关的这些文章:
- 字符串到整数,以及整数到字符串的转换
- Long到Int,以及Int到Long转换
- 从Double到Int,以及从Int到Double的转换
- 多对多和双对多转换
- 字符到整数,字符到字符
- 字符串到长整数以及字符串到长整数的转换
- 字符串到数组,以及数组到字符串的转换
- 字符串到布尔,以及布尔到字符串的转换
- 字符串到字节,以及字节到字符串的转换
- 整数到字节,以及字节到整数的转换