Java被这种语法搞糊涂了

时间:2016-12-12 11:54:44

标签: java syntax

    boolean riddle = !( 1 < 8 ||  (5 > 2  && 3 < 5));

布尔值是真或假。

! =不是

|| =或

&安培;&安培; =和

但我仍然不理解这种语法......有人可以解释一下这句语法究竟做了什么吗?

4 个答案:

答案 0 :(得分:4)

解剖它:

有一些比较,例如

5 > 2 ... true

3 < 5 ... true 

使用&amp;&amp ;;将这两个人拉在一起如此真实&amp;&amp;是的 - &gt;真

1 < 8 ... true

其中一个人或其他人;所以我们得到真实或真实 - &gt;真

最后,(true) - &gt;假

长话短说:如果你不了解全貌,请将其分解为你理解的部分;然后再将它们拉到一起。

编辑:当然,我在解释中使用的顺序并不是现实中发生的事情。那里,1&lt;首先评估8;而且这是真的;和&#34;真或X&#34;总是如此,其他比较甚至都没有计算出来。

答案 1 :(得分:1)

not !运算符否定了它前面的内容。在这种情况下!()它将产生与括号内部相反的内容。

||或运算符检查是否有一个条件或另一个条件为真。必须至少有一个条件才能返回true。

最后,&&检查条件语句的两端,看它们是否都是真的,并且它们都必须为真才能继续。

答案 2 :(得分:1)

boolean riddle = !( 1 < 8 ||  (5 > 2  && 3 < 5));

让我们按照Java的方式解析它:

  • boolean:这是一个布尔值,即truefalse
  • riddle:变量riddle被声明为boolean
  • =:使用右侧的表达式初始化布尔变量riddle
  • !(...):它返回一个布尔值,括号内的布尔值的否定(=相反)。
    • 括号内是bool1 || bool2表达式,其中||"lazy OR"运算符。如果bool1为真,则无需评估bool2
    • bool11 < 8,这是真的。
    • bool2未经过评估
    • bool1 ||bool2是真的
  • !(...)是假的
  • riddle已使用false
  • 初始化

在任何时候5 > 23 < 5都会被评估。 Eclipse警告说,这两个表达式是&#34;死代码&#34;并且可以被移除。

整个表达可能是:

boolean riddle = !( 1 < 8 ||  (5 > 2  && doSomethingVeryDangerous()));

结果将是相同的,根本不会发生任何方法调用。

答案 3 :(得分:0)

您遇到的问题是,在检查是true还是false的同时进行初始化。你无法比较布尔值和整数。如果你想这样做,那么你需要通过从一种数据类型转换到另一种数据类型或者在解决方案中涉及另一个变量来以另一种方式解决它。解决语法问题所需的方法是将其划分为:

你是怎么做到的......

boolean riddle = !( 1 < 8 ||  (5 > 2  && 3 < 5));

如何潜在地解决它......

boolean riddle;

"...some code to decide if riddle will be true or 
false and assign it to the variable riddle..."

if (riddle == true){
"...do some code here...";
}

if (riddle == false){
"...do some code here...";
}

或者您可以通过不使用boolean作为数据类型来解决问题,而只使用这样的整数......

int riddle;

"...some code to decide what value riddle will 
have and assign it to the variable riddle..."

if ( riddle < 8 && riddle > 1){
    "...do some code here...";
}