if-else は条件分岐処理の最も基本的な文です。文法は次のようになっています。
if (expression)
statement1
else
statement2
まず最初に「expression」が評価されます。「expression」は boolean または Booleanクラスである必要があります。要するに評価した結果が真か偽で返される必要があるということです。「expression」が真の場合には文「statement1」が実行されます。偽の場合には文「statement2」が実行されます。「else」とそれに続く「statement2」は省略することも可能です。
例を示しましょう。
Sample11.java
01|public class Sample11{
02| public static void main( String[] args){
03| int a = 10;
04| int b = 5;
05|
06| System.out.println( "a = " + a + ", b = " + b);
07|
08| if( b > a)
09| System.out.println( "b > a");
10| else
11| System.out.println( "b <= a");
12| }
13|}
このプログラムでは expression が b > a で、statement1 が System.out.println( "b > a") 、statement2 が System.out.println( "b <= a") です。
いま、 a = 10 、 b = 5 としているので「expression」の評価は偽となります。つまり「statement2」が実行されるはずです。実際の実行結果を見てみましょう。
C:\jprogram>java Sample11 a = 10, b = 5 b <= a
確かに「statement2」で命令している b <= a が出力されていますね。
さて、さきほど文が記述できるところにはブロックを用いることができると書きました。ということは 「statement1」や「statement2」はブロックでも構わないわけです。実際にやってみましょう。
Sample12.java
01|public class Sample12{
02| public static void main( String[] args){
03| int a = 10;
04| int b = 5;
05|
06| System.out.println( "a = " + a + ", b = " + b);
07|
08| if( b > a){
09| System.out.println( "expression1 executed.");
10| System.out.println( "b > a");
11| }
12| else{
13| System.out.println( "expression2 executed.");
14| System.out.println( "b <= a");
15| }
16| }
17|}
文を書くべきところにブロック { 文1; 文2; ... } を記述しました。実行結果は次のようになります。
C:\jprogram>java Sample12 a = 10, b = 5 expression2 executed. b <= a
確かに「statement2」に相当するブロックが実行されました。
さて、もうひとつ注目したいのは if-else それ自体も文であるということです。ということは「statement 」に if-else を持ってきても良いということです。次のように if-else の連鎖をさせることも可能です。
if ( expression1 )
statement1
else if ( expression2 )
statement2
else if (expression3 )
statement3
...
else if ( expressionN-1 )
statementN-1
else
statementN
分岐先が複数ある場合に良く使われるので、こんな書き方もできるんだということを覚えておいてください。
最終更新時間:2009年04月25日 21時41分42秒