プログラミングでは、ある条件が成り立つ場合と成り立たない場合で異なる処理を行う必要があります。このような場合に使用されるのが条件分岐(if文)です。
この記事では、Javaの条件分岐の基本を学びましょう!
初心者でもわかりやすく、シンプルなサンプルコードを交えて説明します。
条件分岐(if文)とは?
Javaにおける条件分岐は、if文を使って実現されます。基本的なif文の構文は以下の通りです。
if (条件式) {
// 条件が成り立つ場合の処理
} else {
// 条件が成り立たない場合の処理
}
上記の構文では、条件式が成り立つ場合にはifブロック内の処理が実行され、成り立たない場合にはelseブロック内の処理が実行されます。条件式が成り立たない場合の処理がない場合には、下記のようにelseは不要です。
if (条件式) {
// 条件が成り立つ場合の処理
}
条件式
条件式とは
条件式とは、真偽値(true / false)を返すような式のことです。
例えば、「整数nが偶数である」のように変数の値によって真偽が異なる条件式やboolean型の変数がよく使われます。
int n = 1;
if (n % 2 == 0) { // nが偶数である(n÷2の余りが0)
// 条件が成り立つ場合の処理
}
boolean isValid = true;
if (isValid) { // isValidがtrueのとき
// 条件が成り立つ場合の処理
}
比較演算子(大小,等しい)
条件式では、比較演算子を使用して変数や値の大小や等しさを比較します。以下は、よく使用される比較演算子の例です。
==
:等しい!=
:等しくない<
:より小さい>
:より大きい<=
:以下>=
:以上
これらの演算子を使って、変数や値の大小や等しさを比較し、それに基づいて処理を分岐させることができます。
int number = 10;
if (number > 0) { // numberが正(0より大きい)とき
System.out.println("数値は正です。");
}
この例のif文では、変数numberが0より大きい(正の値)ときに「数値は正です。」と出力されます。
今回はnumberが10。0より大きいので、「数値は正です。」と出力されます。
次の例では、変数numberが0より小さい(負の値)ときに「数値は負です。」と出力されます。
int number = 10;
if (number < 0) { // numberが負(0より小さい)とき
System.out.println("数値は負です。");
}
numberが0より小さくはない(0以上)ので、if文の中の処理は実行されません。
そのため、「数値は負です。」は出力されません。
文字列の比較
数値だけでなく、文字列を比較したいこともあるでしょう。
比較演算子を使って下記のように書いてみました。
String test = "テスト";
if (test == "テスト") {
System.out.println("テストです。");
}
このとき、testには「テスト」という文字列が入っているので、「テストです。」と表示されそうですよね。
ですが、この場合には「テストです。」と表示されません。
なぜなら、Stringは参照型だからです。
参照型の変数には値ではなく値の格納された場所の情報が入っているため、比較演算子では比較ができません。
基本型と参照型についてはこちらの記事で説明していますので、確認してみてください。
では、Stringの比較はどうすればよいのでしょうか?
Stringの比較で用いるのが「equals」です。
「A.equals(B)」という形で書くことで「AとBが等しい」という意味になります。
String test = "テスト";
if ("テスト".equals(test)) { // testがテストのとき
System.out.println("テストです。");
}
このように書くと、testと「テスト」は等しいので「テストです。」と出力されます。
「equals」を使うときの注意点が1つあります。
それは、左辺(A)にはなるべく定数を書くことです。
なぜかというと、Stringはnullが入ることもあるからです。
nullとは、何もないことを意味するものだと思ってください。空文字(””)とは異なります。
nullとの比較はできないのでエラーが発生します。それを避けるために原則として左辺には変数を置かないようにしましょう。
boolean型の条件式
boolean型も条件式に使うことができます。むしろ、boolean型はよく使います!
boolean型は真偽(true/false)を表すデータ型なので、boolean型の条件式では比較演算子は不要です。
次のように、条件式にboolean型を入れてみましょう。
boolean isStudent = true; // true:学生, false:学生でない
if (isStudent) {
System.out.println("学生です。");
}
このとき、isStudent はtrue(真)なので、if文の条件式が成り立ちます。
そのため、「学生です。」と表示されます。
以下のように書いても同じ結果にはなりますが、上で紹介した書き方の方が一般的です。
boolean isStudent = true; // true:学生, false:学生でない
if (isStudent == true) {
System.out.println("学生です。");
}
条件の否定
条件式を考えるうえで、「〇〇でないとき」のように否定の条件もあります。
条件の否定には「!」を使います。
下記のように、boolean型がfalseの場合やString型が等しくない場合という条件式が作れます。
boolean isValid = true;
if (!isValid) { // isValidがtrueでない(false)のとき
System.out.println("falseです。");
}
String str = "test1";
if (!"test2".equals(str)) { // strがtest2でないとき
System.out.println("strはtest2ではありません。");
}
複数の条件の組み合わせ(AかつB,AまたはB)
複数の条件を組み合わせて処理を行う必要がある場合もあります。このときには、論理演算子(&&
、||
)を使用します。
&&
(論理積:AかつB):両方の条件が成り立つ場合にtrue||
(論理和:AまたはB):どちらかの条件が成り立つ場合にtrue
これらを使って、複数の条件を組み合わせた処理を行うことができます。
int age = 25; // 年齢
boolean isStudent = false; // true:学生, false:学生でない
if (age >= 18 && !isStudent) {
System.out.println("成人です。");
}
この例では、ageが18以上 かつ isStudentがfalse の場合に「成人です。」と表示され、それ以外の場合には表示されません。
if-else文とelse if文
if-else文
if-else文の使い方
既に述べたように、if-else文は特定の条件が成り立つ場合にif文の中の処理を行い、そうでない場合にelse文の中の処理を行います。
if文はプログラムのフローを制御することができるので、非常によく使われます。
if-else文の使用例
では、if-else文を使用した例を見てみましょう。
int number = 7;
if (number % 2 == 0) {
System.out.println("偶数です。");
} else {
System.out.println("奇数です。");
}
この例では、変数numberが偶数か奇数かを判定し、それに応じてメッセージを表示します。
else if文
else if文の使い方
if-else文では、条件が成り立つ場合と成り立たない場合の分岐だけでした。
しかし、実際には複数の条件分岐があることも多いです。
条件Aを満たすときには処理Aを実行し、条件Bを満たすときには処理Bを実行、条件Cを満たすときには処理Cを実行する、といった場合には「else if」を使います。
else if文の使用例
では、実際にelse if文を使用した例を見てみましょう。
例えば、成績に応じて異なるメッセージを表示する場合を考えてみます。
int score = 85;
if (score >= 90) {
System.out.println("優秀な成績です。");
} else if (score >= 80) {
System.out.println("良い成績です。");
} else if (score >= 70) {
System.out.println("普通の成績です。");
} else {
System.out.println("成績が不足しています。");
}
この例では、scoreの値に応じて異なるメッセージを表示します。
最初のif文から順に処理をしていくので、まずは「score >= 90」をみます。
scoreは85なので、この条件式は成り立ちません。
次に「score >= 80」をみると、scoreは80以上なのでこの条件式が成り立ちます。
そのため、「良い成績です。」と出力されます。
ここで条件式が成り立ったので、これ以降の「else if」や「else」の処理は実行されません。
まとめ
この記事では、Javaの条件分岐(if文)の基本的な構文と使い方について紹介しました。
条件分岐はプログラムの流れの制御に使われるので、システム開発において必須です。Javaの条件分岐にはif文のほかにswitch文もありますが、if文の方が非常に多く使われています。
if文を使いこなせるようにいろいろな条件を考えてみてください!
コメント