【问题标题】:Diffrence between multiple && and nested if [duplicate]多个 && 和嵌套 if [重复] 之间的差异
【发布时间】:2014-05-19 07:04:30
【问题描述】:
请我试图找出两者之间的区别。
下面是例子
对于多个 && 运算符:
if(a>b && b>c){
// do some thing
}
用于嵌套 if 条件
if(a>b){
if(b>c){
//do some thing`enter code here`
}
}
哪个快,哪个应该使用。
两者有什么区别。
我想知道复杂性增加时的性能。
【问题讨论】:
-
@JRowan 见Oracle.com 如果您组合多个 &&,则仅在第一个为真时评估第二个,如果第二个为真,则评估第三个,依此类推.. .
标签:
java
php
android
performance
【解决方案1】:
请注意,对于逻辑 AND 版本 (&&),ANSI C 不需要特定的操作顺序。这意味着如果第二个测试取决于第一个测试的结果,那么两者可能会产生不同的结果。
将每个测试括在额外的括号中也是明智的,以避免运算符优先级问题。
【解决方案2】:
我认为第一种是标准方法。
if(a>b && b>c)
{
// do some thing
}
它减少了行数。这意味着它遵循不要重复自己(DRY)原则。在java中执行是逐行。
【解决方案3】:
它们实际上是相同的。无论哪种方式,您都必须测试至少一个条件。在这两个示例中,如果a 小于b,则评估将结束,程序将继续执行下一位代码。此外,现代 Java 编译器实际上会将这两个示例编译成相同的字节码。因此,要回答您的问题,两者都可以,并且其中一个不会显示出比另一个更好的性能。我个人使用第一个示例,因为它更紧凑,我觉得它更易于阅读。
【解决方案4】:
区别主要在于可读性和维护性。
2 个逻辑条件的连接通常意味着它们之间存在语义关系。
要考虑的另一件事是范围。嵌套的 if 在这方面为您提供了额外的灵活性。
【解决方案5】:
这两个是等价的:
if (condition1) block1
else if (condition2) block2
if (condition1) block1
else
{
if (condition2) block2
}
我想它们也编译成同一个程序集,所以应该没有区别。
【解决方案6】:
只有很小的性能差异,选择多个 && 运算符使代码简单易懂