■条件分岐■
if文
文法的にはc言語と基本的に同じif文である.ただし,条件式の部分には比較演算子と論理演算子による論理式しか書くことができない.
if(条件式) { 条件がtrueだったときだけ,この部分を実行 }
あるいは,
if(条件式) { 条件がtrueだったときだけ,この部分を実行 } else { 条件がfalseだったときだけ,この部分を実行 }
このように,if文は条件次第で実行したりしなかったりする部分を作るために,あるいは条件次第でどちらか一方だけを実行したりする部分を作るために用いられる.これを条件分岐と呼ぶ.
複雑な条件分岐
複数のif文を組み合わせることで,どんな複雑な条件も記述可能である.このとき,if文の中括弧{と}は,もしも一文だけだった場合には省略可能である.このため,例えばelseの部分で実行するのが別のif文ひとつだけだった場合には,次のようにつなげて書くことができる.
if(条件1) { 条件1がtrueだった時 } else if(条件2) { (条件1がfalseで)条件2がtrueだった時 } else if(条件3) { (条件1と条件2が両方falseで)条件3がtrueだった時 } else { 条件1も条件2も条件3も,全部falseだった時 }
switch文
上記の例で,特に,条件1や条件2などがすべてある変数にどんな値が格納されているかを調べるような場合がよくある.これを簡単に書くためにswitch文が用意されている.
switch(i) { case 1: 変数iが1だったときだけ,ここを実行 break; case 2: 変数iが2だったときだけ,ここを実行 break; case 3: 変数iが3だったときだけ,ここを実行 break; default: 変数iがそれ以外全部のとき,ここを実行 }
breakは,caseを終了するときに必要な文で,これがないと次のcase内部も実行してしまう.これを逆に利用して次のように書くこともできる.
switch(i) { case 1: case 2: case 3: 変数iが1か,2か,3だったとき,ここを実行 break; default: 変数iがそれ以外全部のとき,ここを実行 }
文字列の比較について
intやdoubleなどと異なり,文字列の比較は少し注意が必要である.文字列を比較するためには次のようにequalsメソッドを使用すること.(メソッドに関しては後で説明する.)
String s1="あいうえお"; String s2="かきくけこ"; if (s1.equals(s2)) { System.out.println("同じ文字列です"); }
この条件式の部分をequalsを使わずに普通の比較演算子で書いてしまうと正しく動作せずに,必ずfalseとなる.
if (s1==s2)) { //間違い System.out.println("同じ文字列です"); //この部分は絶対に実行されない }