代码之家  ›  专栏  ›  技术社区  ›  Yardena

Java中的位与(&)表达式

  •  1
  • Yardena  · 技术社区  · 14 年前

    我正在调试其中包含的代码 expr1 & expr2 哪里 expr1 有副作用影响 expr2 评价结果。我怀疑 表达式2 表达式1 && ,但不一定是 & . 我还怀疑计算顺序的改变可能是HotSpot执行优化的结果(我们运行的是java6u20)。你知道HotSpot是否可以进行这样的优化吗?更好的是,提供任何指向支持或消除怀疑的文档的指针。提前谢谢。

    编辑:感谢那些建议重写代码,使它既正确又可读-你是对的,但我已经做了,所以这不是我要找的。不幸的是,很难测试这种变化,这就是为什么我在这里问这个问题。

    2 回复  |  直到 14 年前
        1
  •  6
  •   Mark Byers    14 年前

    评估顺序在 specification

    Java编程语言保证操作符的操作数按特定的求值顺序求值,即从左到右。

    另请注意,上面写着:

    您的代码可以更清楚地重写如下:

    int a = expr1;
    int b = expr2;
    int result = a & b;
    
        2
  •  1
  •   naikus    14 年前