Java5日目
制御構文
文を実行すさせる順番のことを制御構造(制御フロー)といって、代表的なものして順次、分岐、繰り返しの3つある。
条件式
条件式は、処理を分岐する条件や、繰り返し続ける条件の表現するためのもので、age >= 20 のような使い方をする。
条件式は==,!=,>,<,>=,<=といった記号(関係演算子)を使う。また条件式は評価結果がtrueまたはfalseになる式である必要がある。
※Javaでは文字列は==で比較できないため注意
tenki == "雨"のような比較をするとコンパイルエラーは起きず、実行できるがときどき変な動きをするという不具合が起きる。
文字列の比較を行う場合は、
tenki.equals("雨")といった書き方をする。
条件式は論理演算子を用いることで組み合わせることができる。
- &&(かつ:両方の条件が満たされた場合にtrue)
- ||(または:どちらか片方の条件さえ満たされればtrue)
短絡評価
(条件式) || (条件式) というのを例にすると、前半部分の条件式の評価結果がtrueであった場合、後半部分の条件式の評価結果に関わらず、全体としてtrueになるため、後半部分の評価を行わないふるまいのこと
また、否定演算子「!」を条件式の前につけることで条件式自体を否定形にできる
if (!(age == 10)) { ...のような使い方ができる。
分岐
if分のよる分岐
if (条件式) {
//条件式が真のときの処理
} else {
//条件式が偽のときの処理
}
またif-else間にelse if (条件式)を追加することができる
if (条件式1) {
//条件式1が真のときの処理
} else if (条件式2){
//条件式1が偽で条件式2が真のときの処理
} else {
//条件式1,2どちらも偽のときの処理
}
else分はブロック{}の中身が空なら省略できる。
switch文による分岐
if文による条件分岐が多く並び冗長になっている場合、switch文に書き換えた方が見やすい場合がある。
ただ全てのif分がswitch文に書き換えることができるわけではない。
switch文に書き換えることができる条件
①全ての条件式が「変数 == 値」や「変数 == 変数」のように左辺と右辺が一致するかを比較する式になっており、それ以外の「>」や「<」あるいは「!=」などが使われていないこと
②比較する値が整数(byte型、short型、int型のいずれか)、文字列(String型)または文字(char型)であり、小数や真偽値ではないこと
以下サンプルコードです。
switch (fortune) {
case 1:
System.out.println("大吉");
break;
case 2:
System.out.println("吉");
break;
defalut:
System.out.println("凶");
}
break文で処理をぬけることができる。break文を書かないとcaseで一致しその処理を行った後、次のcase文の処理も行ってしまうので書き忘れに注意です。
あえて書かずに逆手に取った記述もできる。
switch (fortune) {
case 1:
case 2:
System.out.println("すばらしい");
break;
case 3:
~
省略
上記のように記述すると、fortuneが1か2なら、「すばらしい」という文字を出力するようにできる。
switch分はどうやって書くんだっけ?であったりcase文でbreakを書き忘れたり...となりそうなのでしっかり書き方は覚えたいと思います。
量が多いので、繰り返しについてwhileやforについては明日まとめます。
Discussion