Java 在表达式中同时使用&&和|运算符

Java 在表达式中同时使用&&和|运算符,java,logical-operators,Java,Logical Operators,条件和条件操作条件(&C) op可以是&&或|| Qn-对于短路&&运算符,如果第一个条件为假,则不计算右部分整体,或仅不计算&&之后的第二个条件 为什么下面两个表达式的结果不同呢 2>3&&52=>True 2>3&&52=>False 我们不能在一个表达式中使用短路运算符和标准运算符吗…?您的结果不同,因为您的第二种情况使用|而不是| |是按位or,与逻辑or不同 现在你说的是短路表达式和标准表达式,但在许多语言中,短路表达式是逻辑表达式的默认或唯一求值方式 如果按标准,您指的是像&或|这样

条件和条件操作条件(&C)

op可以是&&或||

Qn-对于短路&&运算符,如果第一个条件为假,则不计算右部分整体,或仅不计算&&之后的第二个条件

为什么下面两个表达式的结果不同呢

2>3&&5<2 | | 3>2=>True

2>3&&5<2 | 3>2=>False


我们不能在一个表达式中使用短路运算符和标准运算符吗…?

您的结果不同,因为您的第二种情况使用|而不是| |是按位or,与逻辑or不同

现在你说的是短路表达式和标准表达式,但在许多语言中,短路表达式是逻辑表达式的默认或唯一求值方式


如果按标准,您指的是像&或|这样的位运算符,那么您可以将它们与逻辑运算符混合匹配,尽管结果可能不是您期望的结果。

您的结果不同,因为第二种情况使用|而不是| |是按位or,与逻辑or不同

现在你说的是短路表达式和标准表达式,但在许多语言中,短路表达式是逻辑表达式的默认或唯一求值方式


如果按标准,您指的是像&或|这样的位运算符,那么您可以将它们与逻辑运算符混合匹配,尽管结果可能不是您期望的结果。

结果不同,因为|和| |

具体来说,|的优先级高于&,而| |的优先级低于&


结果是不同的,因为|和| |

具体来说,|的优先级高于&,而| |的优先级低于&


我同意|是位运算符,但它也可以用作非短路。我错了吗?好的。。。我建议不要使用标准配置,因为短路配置是标准配置。此外,不要将|视为非短路。它与| |不同。我同意|是位运算符,但它也可以用作非短路。我错了吗?好的。。。我建议不要使用标准配置,因为短路配置是标准配置。此外,不要将|视为非短路。它与| |不同。谢谢..使用| or&作为逻辑运算符有什么问题吗?我不知道,但你必须小心,因为一旦你进入不同的先例,您必须确保知道什么是第一位的,以及服务器将如何读取。@PRAKHARSHARMA我建议不要使用| and&作为逻辑运算符,因为1它们不会短路,因此代码将被不必要地执行,2大多数人不会以这种方式使用它们,因此,您的代码将是非常规的。我刚刚问了类似的问题,我得到了不错的答案:简而言之,大多数人都同意使用| and&强制执行业务逻辑可能会导致错误和不干净的代码。因此不鼓励使用,在一些罕见的情况下会有有用的用法。谢谢..使用| or&作为逻辑运算符有什么问题吗?我不知道,但你必须小心,因为一旦你进入不同的先例,您必须确保知道什么是第一位的,以及服务器将如何读取。@PRAKHARSHARMA我建议不要使用| and&作为逻辑运算符,因为1它们不会短路,因此代码将被不必要地执行,2大多数人不会以这种方式使用它们,因此,您的代码将是非常规的。我刚刚问了类似的问题,我得到了不错的答案:简而言之,大多数人都同意使用| and&强制执行业务逻辑可能会导致错误和不干净的代码。因此不鼓励使用,在一些罕见的情况下有有用的用法。
          System.out.println(2 > 3 && 5 < 2 || 3 > 2);    // true
          System.out.println(2 > 3 && 5 < 2 | 3 > 2);     // false
          System.out.println(2 > 3 && (5 < 2 | 3 > 2));   // false
          System.out.println((2 > 3 && 5 < 2) | (3 > 2)); // true