否则,如果是逻辑等价

时间:2017-01-23 17:56:10

标签: java logic

是否存在以下情况:

if (condition) {
    statement
} else {
    if (condition2) {
        statement
    } else {
        statement
    }
}

不等于:

if (condition) {
    statement
} else if (condition2) {
    statement
} else {
    statement
}

如果有案件,我很难找到案件。如果有人知道一个反例,或者他们肯定是等同的,那么你的输入将非常感激。

5 个答案:

答案 0 :(得分:2)

您问题中的两个陈述完全相同。也就是说,当您想要再次进入if (condition) { statement } else { perform some common steps. if (condition2) { statement } else { statement } } 块之前执行一些常见步骤时,第一个语句更有用。例如:

event_ap

Ereignis   a_nr    tnr    date         time    knr   maschnr
PAN        123     2203   2017-01-23   8:00    11    x222
PAN        132     2203   2017-01-22   8:00    22    x222
PAB        123     2203   2017-01-23   9:00    11    x222
PAN        555     2203   2017-01-23   6:00    33    x222
PAN        555     2201   2017-01-23   11:00   44    x222
PAB        222     2202   2017-01-23   10:00   44    x222

pers_stm

name  knr
Test1 11
Test2 22
Test3 33
Test4 44

答案 1 :(得分:1)

两个条件结构都是相同的。

在第一种情况下,你有更多的选项,比如你可以执行一些代码,其中第二个if或else变为true,块必须执行。

if (condition1) {
    ...
} else {
    ...
    if (condition2) {
        ...
    } else {
        ...
    }
    ...
}

但首先要更简单易读。

您也可以选择使用性能更高的开关。

答案 2 :(得分:0)

不,这些总是完全等同。

他们完全等同的原因是第一个示例中块中唯一的语句是一个if语句;所以删除块根本不会改变语义,因为它只包装一个没有任何变量声明的语句,等等。

对比:

if (condition) {
    statement
} else {
    String foo = "bar";
    if (condition2) {
        statement
    } else {
        statement
    }
}

现在,除了您的版本中的单个if之外,该块正在执行某些操作,因此情况有所不同。

但是,由于您的版本除了if之外没有任何,因此它们完全相同。

答案 3 :(得分:0)

else之后的括号是不必要的,因为之后有一条指令(第二条if),所以除非你因为某种原因解析java文件,否则在任何情况下它们都不应该是

答案 4 :(得分:0)

条件为真或假。只有四个选项有四个两个条件。 在这两种情况下,三个语句中只有一个将被执行,并且在两种情况下都是相同的,因为您可以尝试使用所有四个选项。 因此,即使声明会对条件产生影响,这也不会产生影响。所以我敢打赌它是等价的。