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

Kotlin中&&与and的区别:为何短路执行行为不同?

Kotlin中and与&&的区别及执行逻辑差异原因

核心本质差异

  • &&是短路逻辑与运算符:专门用于布尔值的逻辑判断,遵循短路求值规则。
  • and是按位与运算符:针对数值的二进制位进行运算,并非为逻辑判断设计(虽能通过布尔值转Int间接实现逻辑结果,但属于误用场景)。

执行逻辑差异原因

  1. &&的短路行为
    当第一个条件为false时,逻辑与的结果必然是false,因此会直接终止后续条件的计算,无需执行后面的表达式——这是编程语言的性能优化设计,同时避免不必要的副作用(比如函数调用、变量修改)。

  2. and的强制求值行为
    作为位运算操作符,and需要获取左右两个操作数的完整数值才能执行按位运算。即使第一个操作数是false(对应Int值0),它仍会计算第二个操作数的结果,再将两个值转成二进制逐位进行与运算,最后把结果转回布尔值。

代码示例验证

fun hasSideEffect(): Boolean {
    println("副作用函数被执行了")
    return false
}

fun main() {
    // 使用&&:第一个条件为false,后续函数不会执行
    if (false && hasSideEffect()) {} 
    // 控制台无输出

    // 使用and:第一个条件为false,后续函数仍会执行
    if (false and hasSideEffect()) {} 
    // 控制台输出"副作用函数被执行了"
}

正确使用场景

  • 逻辑判断场景:始终用&&(逻辑与)、||(逻辑或),利用短路特性提升性能并避免意外副作用。
  • 位运算场景:用and、or、xor等操作符处理Int、Long等数值的二进制位操作。

内容的提问来源于stack exchange,提问作者AT Amrani

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 12:02:07