Java 多个if和多个and之间的差异

Java 多个if和多个and之间的差异,java,php,android,performance,Java,Php,Android,Performance,我有一个疑问和困惑。 下面是一个例子 对于&&操作员 if(a>b && b>c) { // do some thing } 对于多个if if(a>b) { if(b>c) { //do some thing } } 那么,哪一个更可取,为什么?因为语法和操作都是一样的。唯一的区别是可读性和代码大小 那么编译时间和速度呢。。这里,我使用简单java作为例子,就像我是java guy一样。如果所有条件都为真,则执行带有&&的条件,

我有一个疑问和困惑。
下面是一个例子

对于
&&
操作员

if(a>b && b>c)
{
    // do some thing
}
对于多个
if

if(a>b)
{
   if(b>c)
{
    //do some thing
}
}
那么,哪一个更可取,为什么?因为语法和操作都是一样的。唯一的区别是可读性和代码大小


那么编译时间和速度呢。。这里,我使用简单java作为例子,就像我是java guy一样。

如果所有条件都为真,则执行带有&&的条件,如果其中一个条件为真,则执行其他条件。

不,两者做的事情不一样。因为&&approach,如果
a>b
返回false,它将不会检查
b>c


但在第二种方法中,它将检查第二个/每个条件,甚至之前的条件返回false。

两个都在执行不同的任务第一个等于逻辑,第二个等于逻辑或

对于第一个,只有当每个条件都为真时,输出才为真;对于第二个,如果第一个条件为真,那么它就可以在这个条件下执行某些操作,我想你理解它们之间的区别

  a>b    b>c    c>d    o/p
  0      0      0      0
  1      0      0      0
  1      1      0      0
  .      .      .      .
  .      .      .      .
  .      .      .      .
  .      .      .      .
  1      1      1      1

这与以下两者之间的差异相同:

if(a>b && b>c && c> d)
{
    // do some thing
}

第一个&是短路运算符,而第二个&是非短路运算符。 在第一种情况下,如果(a>b)返回false,它将不检查(b>c)和(c>d)。在第二种情况下,无论是否为真/假,它都将检查所有三个if条件


在您的情况下,第二个代码块与&operator的功能类似。

这两个代码块做的事情不同。。。。。 代码

if(a>b && b>c && c> d)
{
// do some thing
}
仅当所有条件都为真时才会运行

而在你的另一种方法中,即

if(a>b)
{
//do some thing
}
if(b>c)
{ 
//do some thing
}
if(c>d)
{
//do some thing
}

如果一个条件不满足,那么它将不去检查其他条件……

那么,您认为哪一个更实用?这里没有一个答案,这也取决于你想在多个if中做什么,你的意思是在每个if后面加上括号吗?否则,它们就不一样了。如果你想所有3个都是真的,第一个。如果您希望某些部分为真,则第二部分为真。如果您不喜欢带有
&&
s的大型If的可读性问题,只需将其拆分为多行即可。您应该学习Java basic条件运算符..在GoogleNo中搜索和学习,这是不相似的。我试图说明这两种情况之间的相似性。@vyas:你完全改变了问题。对不起@FlorescentTicker这是我的错。。我被问问题弄糊涂了,也得到了同样的答案。。接受applogies…@FlorescentTicker我是反对票b/c它与原始不匹配,但我只是注意到对话的这一部分,并试图扭转反对票,但它不允许我:((我会在其他地方投票给你,以平衡如此愚蠢的限制。)我已经编辑了这个问题,请检查一下。。我被搞糊涂了,问错了一个。:)我总是尽量避免筑巢。但如果是以使我的单一if条件过于复杂为代价,我不介意将其嵌套。但在您的情况下,它不是复杂的条件,因此最好使用
&&
if(a>b)
{
//do some thing
}
if(b>c)
{ 
//do some thing
}
if(c>d)
{
//do some thing
}