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

为何<=可用于Int与Long类型,而==运算符却无法生效?

Kotlin中Long与Int比较时<=有效但==报错的原因分析

这是Kotlin对不同数值类型的运算符处理规则差异导致的:

  • 比较运算符(<=、<、>=、>)支持隐式类型提升
    Kotlin会自动将范围更小的数值类型(比如Int)安全提升为范围更大的类型(比如Long),再执行比较。示例中a <= 0里,Int类型的0会被自动转为Long类型的0L,和a(Long类型)进行同类型比较,因此编译通过。

  • ==运算符要求严格类型匹配
    Kotlin的==本质上调用的是equals()方法,数值类型的equals()会先检查类型是否一致。如果直接用Long和Int进行==比较,编译器会报错,这是为了避免隐式转换可能带来的逻辑错误(比如开发者可能误将不同类型的数值直接比较,而忽略类型差异)。

如果需要让==生效,可以手动统一类型:

fun main() { 
    val a = 0L
    
    // 方式1:将Int转为Long
    if (a == 0L) { 
        // 编译正常
    }
    
    // 方式2:将Long转为Int(注意:若Long值超出Int范围会溢出)
    if (a.toInt() == 0) { 
        // 编译正常
    }
}

内容的提问来源于stack exchange,提问作者J. Doe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 17:42:04