我是初学者,开始学习java语言。我在书中遇到了一个关于布尔的问题。我不知道如何找到问题的价值,我想知道是否有人可以给我一个代码应该是什么样子的样本。真的很感激帮助。
书中的问题:
假设b的值为false且x的值为0.以下每个表达式的值是什么
a) b && x == 0
b) b || x == 0
c) !b && x == 0
d) !b || x == 0
e) b && x != 0
f) b || x != 0
g) !b && x != 0
h) !b || x != 0
我只是不知道如何执行这个问题,求助! 谢谢
答案 0 :(得分:4)
如果您在Java中查看Operator Precedence,!=
和==
的优先级高于&&
和||
AND和OR)。所以
b && x == 0
只是
b && (x == 0) // --> here x==0 gets evaluated first due to precedence
是
b && true // (cause x is 0)
由于b
为false
,因此最终结果为false
答案 1 :(得分:4)
以下是解决此问题的方法:
&&
和||
需要boolean
双方!
会反转boolean
!=
和==
将int
对转换为boolean
s true
还是false
让我们以您的前几个练习为例:
b && x == 0
您知道b
为false
,因此AND
的结果立即为人所知:false
- 没有必要做其他事情。
b || x == 0
b
是false
,因此OR
的结果不会马上知道。x == 0
(值为true
)b || true
(值为true
,因为OR
与true
的关系始终为true
。)答案 2 :(得分:2)
查找表达式值的简单方法是将表达式打印到屏幕,在您的情况下:
boolean b = false;
int x = 0;
System.out.println(b && x == 0); // false
System.out.println(b || x == 0); // true
System.out.println(!b && x == 0); // true
System.out.println(!b || x == 0); // true
System.out.println(b && x != 0); // false
System.out.println(b || x != 0); // false
System.out.println(!b && x != 0); // false
System.out.println(!b || x != 0); // true
您必须将它放在Java类中并运行它,例如:
public class HelloBoolean {
public static void main (String args[]) {
// code comes here ...
}
}
答案 3 :(得分:1)
条件运算符
&&和||运算符对两个布尔表达式执行条件AND和条件OR运算。 这些运算符表现出“短路”行为,这意味着仅评估第二个操作数 如果需要的话。
&安培;&安培;有条件和
||有条件-OR
来自Equality, Relational, and Conditional Operators
a)b&& x == 0
&&
是有条件的 - 这意味着,只有左操作数为true
时才会评估右操作数。
在你的情况下,b是假的,这意味着评估结束,因为false && <anything>
永远不会是真的,无论<anything>.
b)b || x == 0
||
是条件 - 或者,这意味着只有第一个操作数是false
才会评估右操作数。
在您的情况下,b为false,因此我们需要评估x==0
以获得结果。
答案 4 :(得分:0)
这本书应该解释每个操作的作用。您可以通过以下方式测试结果:
boolean b = false;
int x = 0;
System.out.println(b && (x == 0));
输出应该给你答案真或假。
答案 5 :(得分:0)
当b
是左侧的表达式时:&&
的任何内容都将返回false
,因为b
为false。
当leftside包含b
时 - 只有当右侧的表达式返回||
时,每个true
才会返回true
。否则它将返回false。 / p>
让我们回顾一下你发布的一些例子:
a)b && x == 0
=&gt;评估为false
,因为b
为假,我们使用&&
(AND)
b)b || x == 0
=&gt;评估为true
,因为x==0
为真,我们使用||
(或者)
如果左侧包含!b
,则只有当右侧评估为&&
时,具有true
的任何表达式才会评估为true
。如果表达式有||
,它就会
无论右侧的表达如何,评估为true
。
c)!b && x == 0
=&gt;将评估为true
:因为双方评估为true
d)!b || x == 0
=&gt;将评估为true
:因为双方评估为true
g)!b && x != 0
=&gt;将评估为false
,因为&&
要求双方都为真,但右侧评估为false
h)!b || x != 0
=&gt;将评估为true
,因为左侧评估为true
,我们使用OR(||
)
答案 6 :(得分:0)
因为你正在尝试学习Java,所以启动eclipse并执行以下操作:
public static void main (String args[]) {
boolean b = false;
int x = 0;
if(b || x == 0) System.out.println(true);
else System.out.println(false);
}
然后你得到答案(至少是第一个答案)。
答案 7 :(得分:0)
首先,“0”在java中不是“假”(与许多其他语言不同)。这是纯粹的。
假设您熟悉主要功能。 请记住使用与其公共类相同的名称保存文件。
在这种情况下BooleansDemo.java
优先规则在此之前的答案中有详细描述。
public class BooleansDemo {
public static void main(String[] args) {
Boolean b = false;
int x = 0;
System.out.println(b || x == 0);
System.out.println(!b && x == 0);
System.out.println(!b || x == 0);
System.out.println(b && x != 0);
System.out.println(b || x != 0);
System.out.println(!b && x != 0);
System.out.println(!b || x != 0);
}
}
答案 8 :(得分:0)
首先,您需要了解所涉及的操作员 我们正在与五家运营商打交道。
&&
Logical Conjunction:如果其的操作数均为真,则会产生true
。
这可以通过以下真值表给出。
| A | B | A && B |
+-------+-------+--------+
| true | true | true |
+-------+-------+--------+
| true | false | false |
+-------+-------+--------+
| false | true | false |
+-------+-------+--------+
| false | false | false |
||
Logical Disjunction:只要一个或多个的操作数为true,就会生成true
的结果。
这可以通过以下真值表给出。
| A | B | A || B |
+-------+-------+--------+
| true | true | true |
+-------+-------+--------+
| true | false | true |
+-------+-------+--------+
| false | true | true |
+-------+-------+--------+
| false | false | false |
!
Negation:在其操作数为false时生成true
,在其操作数为true时生成值false
。< / em>的
这可以通过以下真值表给出。
| A | !A |
+-------+-------+
| true | false |
+-------+-------+
| false | true |
==
等于:出于此问题的目的,它会比较两个数字,如果两个数字相同,则返回true
。
!=
不等于:它是!(A == B)
的缩写,即,如果是true
则返回&&
数字不相同。
请注意,||
和&&
都可以从Short-circuit Evaluation中受益(也称为快捷方式评估)。这意味着只有在必要时才会评估第二个操作数(右侧操作数) 。
连词false
要求两个操作数都为真。它首先评估第一个操作数。如果第一个操作数求值为||
,则整个连词为假,并且在评估第二个操作数时没有意义。
析取true
,需要一个操作数为真。它首先评估第一个操作数。如果第一个操作数的计算结果为&&
,那么整个析取是正确的,并且在评估第二个操作数时没有意义。
另请注意,其余三个操作数的优先级高于||
和b && x == 0
。例如,b && (x == 0)
与a) b && x == 0 // false: b is false, short-circuit applies
b) b || x == 0 // true: b is false, x == 0 is evaluated to true
c) !b && x == 0 // true: !b is true, and x == 0 is also true
d) !b || x == 0 // true: !b is true, short-circuit applies
e) b && x != 0 // false: b is false, short-circuit applies
f) b || x != 0 // false: b is false, x != 0 is also false
g) !b && x != 0 // false: !b is true, however x != 0 is false
h) !b || x != 0 // true: !b is true, short-circuit applies
完全相同。但是,评估的顺序仍然存在。
总结:
{{1}}