Kotlin中‘as Long’与‘.toLong()’的区别是什么?哪种用法更优?
Kotlin中
toLong()与as Long的区别及适用场景 先看示例代码:
val a: Int = 6 val b = a.toLong() val c = a as Long
两者核心区别
toLong()是类型转换方法:它会生成一个新的Long实例,将Int的数值转换为Long类型,属于安全的显式转换。对于Int转Long来说,因为Long的取值范围远大于Int,不会出现溢出问题,转换过程完全可靠。as Long是强制类型转换运算符:它的作用是告诉编译器“我确定这个变量的实际类型就是Long,请将它视为Long处理”,但不会做数值转换。在示例代码中,a的实际类型是Int,运行时会直接抛出ClassCastException,因为Int和Long是完全独立的原始类型,不存在继承或实现关系,无法强制转换。
适用场景
- 如果需要将
Int数值转换为Long类型,只能用toLong(),这是Kotlin设计的标准数字类型转换方式,符合语言规范且不会出错。 as Long仅适用于变量实际类型就是Long的场景(比如变量声明为Any类型,但实际存储的是Long值),用来让编译器识别其真实类型,不能用于不同数字类型之间的数值转换。
内容的提问来源于stack exchange,提问作者ninhnau19
相关产品推荐
相关产品推荐

