2015-02-24 47 views
5

可以检查多少条件? EG,如果检查

if(a==1 && b==1 && c==1 && ... && n==1) 

我知道这也许可以被嵌套IFS简单地加以解决,然后多少它不会是一个问题。但坦率地说,我很好奇,似乎无法找到它需要多少。

另外,因为我有你注意无论如何,有

if(a==1 && b ==1) 

而且

if(a==1) 
    if(b==1) 
+5

请问每个问题一个问题。 – 2015-02-24 15:40:02

+0

从技术上讲,只有一个条件是在一个'if'里面进行评估的,什么是ascually正在发生的情况是1个条件被评估,并且它的结果被评估为下一个等等...... – 2015-02-24 15:41:04

+0

1)没有限制。 2)两者相同 – 2015-02-24 15:41:37

回答

7

if中的条件语句的数量没有限制。 另外,两个模块中都没有性能改进。

两者之间最大的区别是,您无法控制第一个条件失败的条件。

实施例:

if(a==1 && b==1) { 
    //do something 
} else { 
    //no way to tell which one failed without checking again! 
} 

其它之一:

if(a==1) { 
    if(b==1) { 
     //do something 
    } else { 
     // 'b' failed (meaning: b is not equal to 1) 
    } 
} else { 
    // 'a' failed 
} 
8

没有明确的限制之间的效率的任何差异,据我所知。实际的限制是可读性成为问题。

实际的代码限制可能是由于Java方法只能包含大约64 KiB的字节码。

你最后的两个代码块做同样的事情(假设只有一个代码块或后面的语句)。如果涉及else,它们只会有所不同。

2

我不确定if子句中语句的数量,但两种语法之间的性能相同。无论您使用什么语法,编译器都会生成相同的字节码。

+0

如果你证明这两段代码的生成字节码在你的文章中也是相同的,那将会更好。 – 2015-02-24 15:44:10

2

一个java if语句可以测试正好一个条件:

如果(布尔表达式陈述 [其他声明]

a==1 && b==1 && c==1 && ... && n==1在你的例子是一个布尔表达式,因为别人已经告诉过你,有一个布尔表达式是如何复杂的允许是没有硬性限制。