Bitwise和布尔运算符'AND'之间的区别

时间:2011-06-09 01:30:14

标签: java if-statement operators bitwise-operators

  

可能重复:
  logical operators in java
  What's the difference between | and || in Java?

正如标题所说,我需要知道&运算符和&&运算符之间的区别。 任何人都可以用简单的语言帮助我。

  1. 他们彼此之间有什么不同?
  2. 在IF声明中使用哪一个?

3 个答案:

答案 0 :(得分:4)

如果第一个结果为FALSE,则&&不会评估第二个结果。 &确实如此。

答案 1 :(得分:4)

&安培;&安培;仅在第一个操作为真时才计算第二个表达式。 &安培;计算两个表达式(即使第一个表达式为false,并且在评估第二个表达式时没有意义)。因此&&比&快一点点在逻辑运算中。因此&&也被称为短路和。

&安培;除了逻辑运算符之外,还可以用作按位运算符。所以你可以做2个数字的“比特和”,例如

int result = 1 & 3; // will evaluate to 1

&安培;&安培;不能用作位操作符。

对于条件IF运算符,请使用&&amp ;.它比&。

快一点点

答案 2 :(得分:4)

实际上有三个“和”运营商:

  • a && b,其中a和b为布尔值:评估a。如果为true,则评估b。如果为true,则结果为真。否则,结果是错误的。 (即如果a不成立,则不评估b。)
  • a & b,a和b为布尔值:评估两者,做逻辑和(即只有两者都为真时才为真)。
  • a & b,其中a和b都是整数类型(int,long,short,char,byte):计算a和b,并按位进行AND。

第二个可以被视为第三个的特殊类型,如果将boolean视为一位整数类型; - )

作为if语句的顶级条件,您可以使用前两个语句,但第一个语句最有用。 (即,在很少的情况下,你真的需要第二个,第一个会做错事,但反过来更常见。在大多数情况下,第一个只是更快一点。)