👌

Java5日目

2023/08/04に公開

制御構文

文を実行すさせる順番のことを制御構造(制御フロー)といって、代表的なものして順次、分岐、繰り返しの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