Javaの条件分岐(if文、switch文、三項演算子)について使い方をまとめました。
勉強の記録、内容をできるだけ網羅できるようにしたいです。
●この記事で分かること
- if文の使い方
- switch文の使い方
- 三項演算子の使い方
Contents
if文の使い方
if文
//if文の構文 if(<条件式>){ <文> }
if文は最も基本的な条件式です。ifは日本語訳で「もしも」という意味です。
if文の構文である、if( <条件式> )<文> もしも<条件式> に合致する(true)ならば<文> を実行します。
例えば、変数a=1とし、<条件式>をa == 1とすると、a=1のため、条件文として当てはまります。
int a = 1; if (a == 1) { System.out.println("a は 1 です"); } // 実行結果 a は 1 です
if (a == 1)を日本語訳すると「もしも a が 1ならば~する」です。
日本語訳で考えると、理解しやすくて良いですね。
if-else文
//if-else文の構文 if(<条件式>){ <文> } else { <文> }
if文では<条件式>が合致する(true)場合に文を実行します。合致しない場合は、else文で合致しない(false)場合に文を実行することができます。
elseは日本語訳で「それ以外」という意味です。
以下の例文に例えると分かりやすいです。
int a = 2; if (a == 1) { System.out.println("a は 1 です"); } else if (a == 2) { System.out.println("a は 2 です"); } else { System.out.println("a は 1,2 以外です"); } // 実行結果 a は 2 です // 実行結果(int a = 3)とした場合 a は 1,2 以外です
日本語訳で考えながら読んでいくと、分かりやすくなります。
「もしも a が 1ならば~する。⇒ if (a == 1)
それ以外でもしも a が 2ならば~する。⇒ else if (a == 2)
それ以外ならば~する。⇒ else」
elseは「それ以外」の語訳のとおり、条件式に合致した場合、後続の処理には進みません。
int a = 2; if (a == 2) { System.out.println("a は 数字 です"); } else if (a == 2) { System.out.println("a は 2 です"); } else { System.out.println("a は 2 以外です"); } // 実行結果 a は 数字 です //⇦ 「a は 2 です」は出力されない
if文で否定
// ifで否定する場合の構文 // int型等の変数の場合 if(a != b){ //a,bはint型等の変数 <文> } // boolean型の変数の場合 if(!<条件式>){ <文> }
if文で否定(条件を反転)する場合は「!」を使用します。
ビックリマークが馴染み深いですが、正式名称は「エクスクラメーションマーク(英語:exclamation mark)」といいます。
Javaだけではなく、C言語をはじめとするいくつかのプログラミング言語では、否定を意味するようです。これは使い慣れて覚えていくしかなさそうです。
//「!=」:右辺と左辺を比較(int型比較) int a = 1; if (a != 2) { System.out.println("a は 2 以外です"); } // 実行結果 a は 2 以外です
上記では「!=」で左辺が右辺と等しくないことを指します。int型などが有効です。
//「!」:判定結果を反転 // 例1(equals) String abc = "abc"; if (!abc.equals("abd")) { System.out.println("abd以外です"); } // 実行結果 abd以外です // 例2 boolean flg = false; if (!flg ) { System.out.println("true"); } // 実行結果 true
boolean型の変数の前に「!」をつけると、処理が反転することが分かります。
上記の場合、「!」を付与しない場合、いずれもfalseでしたが、「!」を使用することで結果が反転することが分かります。
- abc.equals(“abd”) ⇒ false
- !abc.equals(“abd”) ⇒ true
- flg⇒ false
- !flg⇒ true
if文で否定(条件を反転)する場合についてより詳しく、次の記事で解説しています。
以上・以下・より大きい・より小さい
// ifで以上・以下・より大きい・より小さいを比較するための構文 // 以上:aはb以上 if(a >= b){ <文> } // 以上:aはb以下 if(a <= b){ <文> } // より大きい if(a > b){ <文> } // より小さい if(a < b){ <文> }
「以上・以下・より大きい・より小さい」などの比較して条件を判定したりします。数値の比較で利用されるため、int型等の変数の比較で使用されます。
「以上・以下・より大きい・より小さい」など比較するための演算子を「比較演算子」と言います。比較演算子は以下の表にまとめました。
記述方法 | 意味 | |
---|---|---|
不等号 | A < B | AはBより小さい |
A > B | AはBより大きい | |
A <= B | AはB以下 | |
A >= B | AはB以上 | |
等号 | A == B | AはBと等しい |
A != B | AはBと等しくない | |
instanceof | A instanceof B | AはBと同クラスまたはBのサブクラス |
if文の以上・以下についてよりまとめたものは次の記事により詳しく解説しております。
switch文の使い方
switch文は複数条件の分岐を記述したい際に使用されます。
※なお「if-else if-else文」でも代用可能です。ただし、switch文で記載した方が見やすいケースも多くあります。
switchは日本語訳で「移行する 切り替わる」という意味で使われるようです。※電気のスイッチは意味が通りません。 caseは日本語訳で「場合」
つまり、〇〇の場合〇〇に移行する、切り替わるという考え方で覚えれそうです。
switch文を利用する場合の書式は次のようになります。
// switch文の構文 switch ( <式> ){ case <定数式1> : <文1>; break; case <定数式2> : <文2>; break; default : <文3>; }
- 条件式が戻す値と一致するcase式を実行
- defaultはどのcaseにも当てはまらなかったときに実行する処理
- case毎にはbreakキーワード
⇒switch文の処理を終了させるために必要なキーワード、見つからない場合、見つかるまでcase内の文の処理を実行し続ける。敢えて省略しフォールスルーさせるのもありですが、可読性が下がります。(つけ忘れ?あえて等) - breakの代わりにreturnでも問題なし
int num = 10; switch (num) { case 10 : System.out.println("10です"); break; case 20 : System.out.println("20です"); break; default : System.out.println("その他です"); break; } // 実行結果 10です // 実行結果(int num = 20;)とした場合 20です // 実行結果(int num = 21;)とした場合 その他です
条件式が戻せる値の型の制限
条件式が戻せる型には宣言があります。
次のように覚えましょう。
- int型以下の整数型とそのラッパークラス
- 文字と文字列
- 列挙型
if文にin句はないが代替可能
SQLでよく使用されるin句(指定した複数の値に合致するデータを抽出すること)はJavaではないです。ただし、似たようなことはできるため代替案を考えてみたりもしました。
三項演算子の使い方
// 三項演算子の構文 条件式 ? 式1 : 式2;
「条件式」の部分に任意の条件を記述します。
そして「?」の後ろの「式1」に、trueの場合の式を、「式2」に、falseの場合の式を書く形です。
if-else文を簡略化したようなイメージです。
int num = 1; int n = num > 0 ? 100 : 0; System.out.println(n); // 実行結果 100 // 実行結果(int num = -1;)とした場合 0
int num = 1;の場合は num > 0の条件を満たすため(true)、 式1の100を変数nにセットします。
逆に、条件を満たさない場合を満たさないため(false)、 式2の0を変数nにセットします。
コメントを残す