1.输出最后的结果是( ),并写出分析原理

void complicatedExpressionR(){
    int x = 20, y = 30;
    boolean b;
    b = x > 50 && y > 60 || x > 50 && y < -60 || x < -50 && y > 60 || x < -50 && y < -60;
    System.out.println(b);
}

分析:本题考察面试者对java运算符的理解。考察点:

1.1.运算符类别

Java的运算符,分为四类:

算数运算符、关系运算符、逻辑运算符、位运算符。

&& 、|| 就属于逻辑运算符。

1.2.运算符优先级

这里是本题的迷惑点。运算符的优先级中,&&优先于||计算

1.3.短路运算

这才是本题的真正考点:

所谓短路计算,是指系统从左至右进行逻辑表达式的计算,一旦出现计算结果已经确定的情况,则计算过程即被终止。

对于&&运算来说,只要运算符左端的值为false,则因无论运算符右端的值为true或为false,其最终结果都为false。

所以,系统一旦判断出&&运算符左端的值为false,则系统将终止其后的计算过程;

对于 || 运算来说,只要运算符左端的值为true,则因无论运算符右端的值为true或为false,其最终结果都为true。

所以,系统一旦判断出|| 运算符左端的值为true,则系统将终止其后的计算过程。

1.4答案:

所以当系统判断出x>50是false时就已经停止了运算,后面的代码无论什么结果也不用考虑了,b也就是false。

感谢:Java的算数运算符、关系运算符、逻辑运算符、位运算符

results matching ""

    No results matching ""