逻辑运算的结果

时间:2015-03-01 09:28:47

标签: java error-handling logical-operators

  

对于逻辑运算符,操作数必须是 boolean

类型

假设以下代码: -

int p,q;

p=1;

q=1;

System.out.println("The result is : "+(p&q));

输出

结果是: 1

我的问题是,在上面的代码中,两个变量都不是布尔类型。那么为什么这段代码不会产生错误?

另外

System.out.println(" This is an error : "+(!p));

为什么这句话会产生错误?

3 个答案:

答案 0 :(得分:4)

虽然用于它的符号看起来很相似,但这不是布尔运算,
它是按位操作并返回int,而不是boolean。另见:

http://docs.oracle.com/javase/tutorial/java/nutsandbolts/op3.html

请注意,您使用了&(按位AND)而不是&&(逻辑AND)。

答案 1 :(得分:2)

p&q是两个整数的按位AND,而不是逻辑运算符。

!p无效,因为整数上没有!一元运算符。 !仅定义为布尔值。

答案 2 :(得分:1)

&是按位运算符。

  

二进制AND运算符将一个位复制到结果中(如果它存在于两个操作数中

例如在你的情况下。

p = 1(int)= 0001(二进制) q = 1(int)= 0001(二进制)

   0001

 & 0001
---------
   0001

在int。中导致0001 = 1

另一方面,

&&是逻辑运算符,需要布尔操作数。

  

调用逻辑AND运算符。如果两个操作数均为非零,则条件成立。

另外!也是逻辑运算符和必需的布尔操作数。

  

被称为逻辑非运算符。用于反转其操作数的逻辑状态。如果条件为真,那么Logical NOT运算符将为false。

供参考,visit this site.