複数のif
ステートメントとif-else-if
ステートメントの記述に違いはありますか?
複数のif
ステートメントを含むプログラムを作成しようとすると、期待した結果が得られませんでしたが、if-else-if
で機能しました。
条件は相互に排他的でした。
複数のifステートメントを作成する場合、ステートメントは互いに独立しているため、複数のifステートメントがtrueと評価される可能性があります。
単一のifelse-if else-if ... elseステートメントを記述する場合、trueと評価できる条件は1つだけです(trueと評価される最初の条件が見つかると、次のelse-if条件はスキップされます)。
複数のifステートメントを単一のifelseのように動作させることができます-if .. elseステートメントif各条件ブロックがifステートメントを含むブロックから抜け出します(たとえば、メソッドから戻るか、ループから抜け出すことによって)。
例えば :
public void foo (int x)
{
if (x>5) {
...
return;
}
if (x>7) {
...
return;
}
}
と同じ動作になります:
public void foo (int x)
{
if (x>5) {
...
}
else if (x>7) {
...
}
}
ただし、returnステートメントがないと、x> 5とx> 7の両方がtrueの場合に動作が異なります。
両方が同じではありません。 ifステートメントはすべての条件をチェックします。複数のifステートメントを記述する場合は、すべての条件をチェックします。それ以外の場合は、満たされるまで条件をチェックします。 if/else ifが満たされると、そのブロックから外れます。
if()
{
stmt..
}
else
{
stmt
}
if()
{
stmt
}
here compiler will check for both the if condition.
以下のコードの断片では、コンパイラはif条件をチェックし、最初にif条件がtrueになるとすぐに、条件がバイパスされる場合は残ります。
if(){
}
else if
{
}
else if
{
}
else if
{
}
はい、違いがあります。 if-thenおよびif-then-elseステートメント を参照してください。
さらに、簡単にテストできます。
コード#1:
int someValue = 10;
if(someValue > 0){
System.out.println("someValue > 0");
}
if(someValue > 5){
System.out.println("someValue > 5");
}
出力します:
someValue > 0
someValue > 5
コード#2の間:
int someValue = 10;
if(someValue > 0){
System.out.println("someValue > 0");
}else if(someValue > 5){
System.out.println("someValue > 5");
}
出力のみ:
someValue > 0
ご覧のとおり、最初のステートメント(someValue> 0)はtrue
と評価されるため、コード#2が2番目のブロックに移動することはありません。