Kotlin 类型转换
提示
- Kotlin 中的显式类型转换:与 Java 不同,Kotlin 不支持自动类型转换,即使是从较小的数据类型到较大的数据类型。例如,
Int
类型不会自动转换为Long
类型。 - 使用特定的转换函数:在 Kotlin 中,需要使用特定的函数进行类型转换,例如
toLong()
、toInt()
、toFloat()
等,以保证类型安全和防止类型转换错误。 - 从较大类型转换为较小类型的潜在问题:当从较大的数据类型转换为较小的数据类型时,可能会发生值截断。例如,从
Int
转换为Byte
可能会导致数值不准确。
在 Kotlin 中,即使另一种类型更大,一个类型的数值也不会自动转换为另一种类型。这与 Java 处理数字转换的方式不同。例如:
在 Java 中,
int number1 = 55;
long number2 = number1; // 有效代码
这里,类型为 int
的 number1
的值自动转换为 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 转换