当前位置: 首页 > 面试题库 >

在Java的if块中使用逻辑运算符或按位运算符有什么区别吗?

洪通
2023-03-14
问题内容

以下两个if块的内容都应执行:

if( booleanFunction() || otherBooleanFunction() ) {...}
if( booleanFunction() | otherBooleanFunction() ) {...}

那么使用|或使用之间有什么区别||

注意:我调查了一下,找到了自己的答案,下面将其包括在内。请随时纠正我或发表您的看法。肯定还有改进的空间!


问题答案:

逻辑运算符适用于布尔值,而按位运算符适用于位。在这种情况下,效果将是相同的,但是有两个区别:

  1. 按位运算符并不意味着这样做,这使得读取起来更困难,但最重要的是
  2. 逻辑或运算符将评估第一个条件。如果为true,那么下一个条件导致的结果无关紧要,结果将为true,因此 不会执行第二个子句

这是一些方便的代码来证明这一点:

public class OperatorTest {

    public static void main(String[] args){
        System.out.println("Logical Operator:");
        if(sayAndReturn(true, "first") || sayAndReturn(true, "second")){
            //doNothing
        }

        System.out.println("Bitwise Operator:");
        if(sayAndReturn(true, "first") | sayAndReturn(true, "second")){
            //doNothing
        }
    }

    public static boolean sayAndReturn(boolean ret, String msg){
        System.out.println(msg);
        return ret;
    }
}


 类似资料:
  • 那么,在这些语言中同时使用逻辑运算符和按位运算符有什么具体的理由吗?或者他们只是出于熟悉的原因被包括在内? (我知道您可以在布尔上下文中使用“按位”运算符来避免Java和C#中的短路,但我从来不需要这样的行为,所以我想这可能是一个大部分未使用的特例)

  • 问题内容: 我记得有一阵子关于逻辑运算符的内容,在的情况下,使用要比(或反之亦然)更好。 当我回到项目中时,我只需要在项目中使用它,但是我不记得建议使用哪个运算符,或者它是否正确。 哪个更好?为什么? 问题答案: 没有“更好的”,但是更常见的是。它们具有不同的优先级, 并且可以像通常期望的那样工作。 另请参阅:逻辑运算符( 以下示例从此处获取 ):

  • 问题内容: handlebars JS中是否可以将逻辑运算符合并到标准handlebars.js条件运算符中?像这样: 我知道我可以编写自己的帮助程序,但是首先我想确保自己不会重新发明轮子。 问题答案: 这可以通过与帮手助手“作弊”来实现。这可能与开发把手的人的思想背道而驰。 然后,您可以像这样在模板中调用帮助程序

  • 有符号和无符号变量在按位运算上有区别吗?< br >例如,在处理无符号数字时:< br> 将得到00000101。 但当处理带符号的数字时会发生什么?

  • 逻辑运算符把各个运算的关系表达式连接起来组成一个复杂的逻辑表达式,以判断程序中的表达式是否成立,判断的结果是 true 或 false。 逻辑运算符是对布尔型变量进行运算,其结果也是布尔型,具体如表 1 所示。 表 1 逻辑运算符的用法、含义及实例 运算符 用法 含义 说明 实例 结果 && a&&b 短路与 ab 全为 true 时,计算结果为 true,否则为 false。 2>1&&3<4