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

Java中连续!=布尔表达式含义及两组表达式的结果差异问询

关于Java连续布尔比较表达式的解惑

嘿,我来帮你把这个搞懂!当初刚接触Java布尔运算的时候,我也被这种连续的比较运算符坑过,咱们一步一步来拆解:

问题1:(b2 != b1 != b2)的含义是什么?

在Java里,!=(不等于)运算符是左结合的——也就是说,连续的!=会从左到右依次计算,而不是像数学里那样同时比较三个值是否互不相等。

所以b2 != b1 != b2的实际执行顺序是:

  1. 先计算左边的子表达式:b2 != b1,得到一个布尔结果(要么true要么false)
  2. 再用这个结果和右边的b2做!=比较,得到最终的布尔值

简单说,它等价于(b2 != b1) != b2,而不是你可能误以为的b2 != b1 && b1 != b2(这才是判断三个值互不相等的正确写法)。

问题2:为什么(false != true != false)是true,而(true != false != true)是false?

咱们分别拆解这两个表达式的计算过程:

第一个表达式:false != true != false

按照左结合规则,分步计算:

  1. 第一步:false != true → 结果是true(因为false和true确实不相等)
  2. 第二步:用第一步的结果true和右边的false比较:true != false → 结果是true
    所以最终整个表达式的结果是true

第二个表达式:true != false != true

同样按左结合分步:

  1. 第一步:true != false → 结果是true
  2. 第二步:用第一步的结果true和右边的true比较:true != true → 结果是false
    所以最终整个表达式的结果是false

额外提醒

如果你的实际需求是判断三个布尔值互不相等(也就是三个值里没有重复),千万别用这种连续!=的写法,因为它的逻辑和你想的完全不一样。正确的写法应该是:

b1 != b2 && b2 != b3 && b1 != b3

这样才能准确判断三个值是否两两不同。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 08:44:36