if可以检查多少个条件
Posted
技术标签:
【中文标题】if可以检查多少个条件【英文标题】:How many conditions can an if check for 【发布时间】:2015-04-26 07:42:43 【问题描述】:if 可以检查多少个条件? 例如,
if(a==1 && b==1 && c==1 && ... && n==1)
我知道这可能可以简单地通过嵌套 if 来解决,然后嵌套多少就不是问题了。但坦率地说,我很好奇,似乎无法找到需要多少。
另外,反正我有你的注意,效率上是不是有区别
if(a==1 && b ==1)
和
if(a==1)
if(b==1)
【问题讨论】:
每个问题只问一个问题。 从技术上讲,if
中只评估了 1 个条件,实际上发生的是 1 个条件被评估,其结果被下一个评估,依此类推......
1) 没有限制。 2) 两者都是一样的
布尔表达式的长度没有定义的限制;您可能会在某个时候遇到内存问题。关于第二个问题,请参阅:***.com/questions/5259938/…
@Poldie 我很抱歉,但基本上我想看看是否有任何相对于任一选项的优点,因为它通常是嵌套的 if,而不是条件字符串。
【参考方案1】:
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
【讨论】:
【参考方案2】:据我所知,没有明确的限制。实际限制是当可读性成为问题时。
实际的代码限制可能是由于 Java 方法只能包含大约 64 KiB 的字节码。
最后两个代码块做同样的事情(假设它们后面只有一个代码块或语句)。只有在涉及else
时,它们才会有所不同。
【讨论】:
【参考方案3】:我不确定if
子句中语句的数量,但两种语法之间的性能是相同的。无论您使用什么语法,编译器都会生成相同的字节码。
【讨论】:
如果您在您的帖子中证明两段代码的生成字节码也是相同的,那就更好了。【参考方案4】:java if
语句可以只测试一个条件:
if ( 布尔表达式 ) 语句 [ else 声明 ]
您示例中的a==1 && b==1 && c==1 && ... && n==1
是一个 布尔表达式,正如其他人已经告诉您的那样,布尔表达式的复杂程度没有硬性限制。
【讨论】:
以上是关于if可以检查多少个条件的主要内容,如果未能解决你的问题,请参考以下文章