Java 是&&;下列等效代码的语句和嵌套条件?

Java 是&&;下列等效代码的语句和嵌套条件?,java,boolean,conditional,Java,Boolean,Conditional,如果x和y是int变量。对于x和y的所有值,以下两段Java代码在行为上是否等效?解释为什么,或者为什么不 第1版: if (x > 10) { if (y < 20) {System.out.print("hi"); } } if(x>10) { 如果(y10&&y

如果x和y是int变量。对于x和y的所有值,以下两段Java代码在行为上是否等效?解释为什么,或者为什么不

第1版:

if (x > 10)
  {
  if (y < 20)
  {System.out.print("hi");
  }
}
if(x>10)
{
如果(y<20)
{系统输出打印(“hi”);
}
}
第2版:

if (x > 10 && y < 20)
{
System.out.print("hi");
}
if(x>10&&y<20)
{
系统输出打印(“hi”);
}

我认为这是等效的,但我只是想确保我没有遗漏任何东西。我看不出它们怎么可能是等价的。谢谢。

是的,它们完全相同。在这种情况下,归根结底是选择你认为最清晰的一个。

是的,它们是


重要的一点可能不是很明显,在两个版本中,第二个比较只有在第一个比较结果为“true”时才进行评估。

是的,从语义角度来看,它们也是等价的。

是的,它们是等价的,但第二个比较短,您可以添加一个
else
子句,在第一节中,您不能这样做,因为您必须在那里编写两个独立的
else
子句

是否应该使用一个或两个
else
子句取决于您的逻辑要求,因此这两种形式可能都是合适的


我通常会推荐第二个,但是如果你不需要一个单独的
else
子句,并且表达式很大,那么第一个可能会更具可读性。

在这里,结果确实是一样的。是的,但是如果有很多嵌套的if,那么第一个很好
&
不是一个语句,是接线员,短路点不错。很多人可能会错过这一点。