if文は分岐を行う構文
if文とは、「if」という命令を使用して条件分岐を行える構文のことです。
ifは英語で「もしも」という意味の英単語になります。
if文は、プログラムの中で何か制御したい処理や条件がある際に使用されます。
if文の書き方
if文を書く時は、以下のように記述します。
if(分岐条件){ true時の処理 } else { false時の処理 }
if文の後ろにある()の中には、分岐条件を記述しましょう。
条件を記述する際には、論理演算子(OR・AND・NOT)や比較演算子(等号・不等号)が利用できます。
分岐条件が成立していた場合は「true時の処理」が実行され、不成立の場合は「false時の処理」が実行されます。
elseを記述しなかったり、分岐条件を工夫することで「false時の処理」だけを動かしたりすることも可能です。
また、elseではなく「else if(分岐条件)」にすることで分岐条件を増やすこともできます。
// elseがなくてもOK if(分岐条件){ true時の処理 } // else ifで分岐条件を増やせます if(分岐条件){ true時の処理 } else if(分岐条件) { true時の処理 } ・・・
if文の6つの使い方
if文の書き方はわかりましたが、実際にどのように分岐条件や処理を記述するのでしょうか?
ここではサンプルコードを用いて、記述の仕方や動作を確認してみましょう。
if文の使い方として、この記事では以下の6つを紹介します。
- if-else文で複数条件がある場合の記述方法
- 比較演算子(等号・不等号)の使い方
- 論理演算子(OR・AND・NOT)の使い方
- 三項演算子でif-else文を1行に省略した記述方法
- 文字列の一致(イコール)/文字列を含むものを確認する方法
- breakやcontinueでループを制御する方法
ひとつずつ解説しますね。
1. if-else文で複数条件がある場合の記述方法
if文の書き方でも紹介したように、if-else文を用いることで複数の条件を設定することも可能です。
以下のサンプルコードを見ていきましょう。
public class Main{ public static void main(String[] args){ int number = 80; if (number > 90) { System.out.println("素晴らしい結果です!"); } else if (number > 60) { System.out.println("まぁまぁの結果です。"); } else { System.out.println("もう少し頑張りましょう。"); } number = 99; if (number > 90) { System.out.println("素晴らしい結果です!"); } else if (number > 60) { System.out.println("まぁまぁの結果です。"); } else { System.out.println("もう少し頑張りましょう。"); } } }
if文の分岐条件で「(number > 90)」を設定し、else if文には「(number > 60)」を設定しました。
分岐条件の対象である「number」には、80を設定した後に99に設定し直しています。
このプログラムを実行すると、以下の実行結果が得られるはずです。
実行結果↓
まぁまぁの結果です。 素晴らしい結果です!
1回目のif文では80に当てはまる処理が、2回目のif文では99に当てはまる処理が実行されているのがわかります。
2. 比較演算子(等号・不等号)の使い方
先ほど紹介したサンプルコードでも「>」を使っているように、if文の分岐条件でよく使われるのが「比較演算子」です。
比較演算子は、以下の7種類があります。
記述方法 | 意味 | |
---|---|---|
不等号 | 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のサブクラス |
instanceofは、左オペランド(A)が右オペランド(B)と同クラスか、右オペランドのサブクラスであるかを確認する演算子です。
オペランド(operand)とは、演算の対象になる変数や値のことです。
例えば、「x=y+3」という式があった場合、「x」「y」「3」がオペランドになります。
特に、数字や文字列(Hello World など)といったソースコードに書かれた値のことをリテラル(literal)と言います。
instanceofについては、あまりみる機会がないかもしれません。
ここでは、等号・不等号とinstanceofのそれぞれを使ったサンプルコードも見ていきましょう。
等号・不等号のサンプルコード
以下のサンプルコードは、numberの10が分岐条件に指定した数字と比較する処理になっています。
最初の「number < 20」であれば、numberが「1」や「19」といった数字でもtrueを返します。
一方で、「number == 10」だとnumberが「10」以外の数字で場合はfalseを返します。
public class Main{ public static void main(String[] args){ int number = 10; if (number < 20) { System.out.println(number + "は20より小さい値です"); } if (number > 5) { System.out.println(number + "は5より小さい値です"); } if (number <= 10) { System.out.println(number + "は10以下の値です"); } if (number >= 10) { System.out.println(number + "は10以下の値です"); } if (number == 10) { System.out.println(number + "は10です"); } if (number != 20) { System.out.println(number + "は20ではありません"); } } }
このプログラムを実行すると、以下の実行結果が得られます。
実行結果↓
10は20より小さい値です 10は5より小さい値です 10は10以下の値です 10は10以下の値です 10は10です 10は20ではありません
instanceofのサンプルコード
instanceofのサンプルコードも見ていきましょう。
public class InstanceOfClass { public static void main(String[] args) { // サブクラスの作成 sub_InstanceOfClass sub_class = new sub_InstanceOfClass(); if(sub_class instanceof InstanceOfClass) { System.out.println("sub_class は InstanceOfClass のサブクラスです"); } // String型の配列の作成 String arr[] = new String[5]; if(arr instanceof String[]) { System.out.println("arr は String型 の配列です"); } } } // 別ファイルで sub_InstanceOfClass を作成します public class sub_InstanceOfClass extends InstanceOfClass { }
instanceofは、newで作成したオプジェクトの型を判定します。
左オペランドには任意で作成したオブジェクト(sub_class や arr)を、右オペランドにはクラスやインタフェース、配列の型などを設定しましょう。
ここでは、サブクラスと配列を設定しました。
このプログラムを実行すると、以下の実行結果が得られます。
実行結果↓
sub_class は InstanceOfClass のサブクラスです arr は String型 の配列です
3.論理演算子(OR・AND・NOT)の使い方
if文の分岐条件に2つ以上の条件を設定したい場合は「論理演算子」を使います。
論理演算子は、以下の3種類があります。
論理演算子 | 記述方法 | 意味 |
---|---|---|
OR | A || B | AまたはB (AでもBでもない場合はfalse) |
AND | A && B | AかつB (AとBでない場合はfalse) |
NOT | !A | Aではない (Aの場合はfalse) |
それぞれの動きをサンプルコードで見ていきましょう。
public class Main{ public static void main(String[] args){ int number = 10; if ((number < 20) || (number >= 10)) { System.out.println(number + "は10以上または20未満の値です"); } if ((number < 20) && (number >= 10)) { System.out.println(number + "は10以上かつ20未満の値です"); } if (!(number >= 20)) { System.out.println(number + "は20以上の値ではありません"); } } }
最初のif文では、numberが20未満もしくは10以上の値であれば処理を実行します。
次のif文では、numberが20未満と10以上の両方の条件を満たした値、最後のif文では、numberが20以上ではない場合に処理が実行されます。
このプログラムを実行すると、以下の実行結果になるはずです。
実行結果↓
10は10以上または20未満の値です 10は10以上かつ20未満の値です 10は20以上の値ではありません
4. 三項演算子でif-else文を1行に省略した記述方法
ここまで、if-else文のさまざま記述方法を見てきました。
中には「if-else文を何回も書くと、コードが長くなるな」と感じた人もいるかもしれません。
実は、if-else文には三項演算子を用いて1行に省略した書き方があります。
三項演算子とは、被演算子を3つとる演算子のことです。
三項演算子の書き方は以下の通りです。
(条件式) ? 値1 : 値2;
条件式の後に「?」を記述し、trueの時の処理を値1に、「:」を挟んでfalseの時の処理を値2に記述します。
三項演算子の使い方を、サンプルコードで確認しましょう。
public class Main { public static void main(String[] args) { int number = 10; String str = (number == 5) ? "numberは5です" : "numberは5ではありません"; System.out.println(str); } }
String型の変数strを用意し、条件式に「number == 5」を記述し、trueの時は「numberは5です」falseの時は「numberは5ではありません」を設定します。
このプログラムを実行すると、以下の実行結果になるはずです。
実行結果↓
numberは5ではありません
三項演算子は、1行で処理を記述できるため便利ではあります。
しかし、可読性の面から実際のプログラミング現場では利用されないこともしばしばです。
仕事や誰かとソースコードを共有する場合は、三項演算子を使った記述方法で問題ないか確認しておくとよいでしょう。
5. 文字列の一致(イコール)/文字列を含むものを確認する方法
if文を使えば文字列の一致する/しないの確認も可能です。
文字列が一致しているか確認するサンプルコードを見ていきましょう。
public class Main { public static void main(String[] args) { String str1 = "ポテパン"; if(str1 == "ポテパン") { System.out.println("str1 は文字列「ポテパン」と一致します"); } else { System.out.println("str1 は文字列「ポテパン」と一致しません"); } String str2 = "Java"; if(str2 == "ポテパン") { System.out.println("str2 は文字列「ポテパン」と一致します"); } else { System.out.println("str2 は文字列「ポテパン」と一致しません"); } } }
実行結果↓
numberは5ではありません
単語単位であれば、上記のようにif文のみで一致しているかの確認が可能です。
プログラムを組んでいる中には「文字列が含まれているか」を確認したい場合もあるでしょう。
その際は、if文とindexOfメソッドやmatchesメソッドを組み合わせて文字列を確認できます。
詳しい記述方法は、以下の記事にまとめていますので参考にしてみてください。
【関連記事】
▶︎Javaで文字列を検索する7つの方法まとめ【サンプルコードあり】
6. if文のbreakやcontinueでループ制御する方法
if文の中で「break」や「continue」を使うと、for文やwhile文といったループを途中で抜けることも可能です。
このようなループ制御は、実際のプログラミング現場でもよく利用されるので覚えておくとよいでしょう。
詳しい記述方法は、以下の記事にまとめていますので参考にしてみてください。
【関連記事】
▶︎【必須スキル】繰り返し処理で利用するJava for文の使い方について解説!
まとめ
プログラミングで条件分岐を使わないプログラムはほとんどありません。
それだけに、if文が使えるかどうかは必須スキルであると言っても過言ではないでしょう。
条件が複雑になればなるほど、記述方法も難しくなります。
そんな時はぜひ、この記事を参考にif文の記述方法を覚えてくださいね!
if文は、処理の分岐を行うことができます。
()内に分岐条件を記述し、条件に一致すると{}内に記述した処理が実行されます。
記述の仕方によって、さまざまな条件に対応したプログラムが組めるのです。