gpt4 book ai didi

Java 规范更改了 AND OR 运算符优先级?

转载 作者:行者123 更新时间:2023-11-29 05:22:19 26 4
gpt4 key购买 nike

<分区>

我一直在为 Oracle java 认证考试学习一段时间。

今天我遇到一个问题,询问表达式的哪一部分求值。

就像a() || b() && c()。

目前看来一切正常。 && 运算符优先级高于 ||运算符,它首先求值,然后 ||运营商评估。

当我尝试在我的 windows 7/java 7 机器上运行类似代码时出现问题。当我运行我的代码时 ||运算符(operator)首先评估。我查了几本书,我研究的那本书(manning java associate prep.)它说反之亦然。你觉得怎么了?

这是我的代码,你可以检查

public class Dummy {


public static void main(String[] arg) {

boolean ax = method1() || method2() && method3() ;

}

public static boolean method1(){

System.err.println("method1");

return false;
}

public static boolean method2(){

System.err.println("method2");
return false;
}

public static boolean method3(){
System.err.println("method3");
return true;
}

编辑:我得到的输出:方法 1,方法 2我期望的是:方法 2,方法 1

编辑2:这就是书上所说的(manning OCA java Se 7 programmer 1 cert.guide)第507页

表达式 (a >= 99 || a <= 33 && b == 10) 具有三个操作数以及OR(||) 和 AND(&&) 短路运算符。

由于短路运算符 AND 的运算符优先级高于短路运算符 OR,因此表达式的计算如下:(a >= 99 || (a <= 33 && b == 10))前面表达式的计算从 (a <= 33 && b == 10) 的计算开始。

因为 a <= 33 计算结果为真,运算符 && 计算第二个操作数 (b == 10)确定 (a <= 33 && b == 10) 是否会返回 true 或 false。 a <= 33 返回真并且 b == 10 返回 false,因此表达式 (a <= 33 && b == 10) 返回 false。原来的表达式——(a >= 99 || (a <= 33 && b == 10)) 现在简化为以下表达式:(a >= 99 || 错误)

短路运算符 OR(||) 执行它的第一个操作数(即使第二个操作数已知),评估 a >= 99。所以对于这个表达式,所有三个操作数都被评估......

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com