You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 19:15:54