Javaのif文とは?条件によって処理を分ける基本を初心者向けに解説
新人
「先輩、Javaで条件によって動きを変えるってどうやるんですか?例えば、テストの点数が六十点以上なら合格、未満なら不合格みたいな処理です。」
先輩
「いい質問だね。そういう場合はif文を使うんだ。Javaのif文は“条件分岐”の代表的な構文で、プログラムの流れを制御する基本中の基本なんだよ。」
新人
「条件分岐っていうのは、何かの条件を判定して処理を分ける仕組みですよね?」
先輩
「その通り。Javaのif文を使うことで、“もしこの条件が真ならこの処理を実行する”といった動きを作れるんだ。」
新人
「なるほど!実際にどう書くんですか?」
先輩
「じゃあ、基本的な書き方から見ていこうか。」
1. if文とは?
Javaのif文は、条件によって処理を分けるための制御構造です。プログラムが上から順に実行される中で、ある条件がtrue(真)であるときだけ特定の処理を行う仕組みです。たとえば、「もし温度が三十度を超えたら冷房をつける」というように、人間の判断をそのままコード化したようなものです。
基本的な構文はとてもシンプルで、次のように書きます。
if (条件式) {
// 条件が真のときに実行される処理
}
ここで「条件式」には、==(等しい)や>(より大きい)などの比較演算子を使って、真偽を判定します。例えば次のように、数値を比較して分岐させることができます。
public class IfExample {
public static void main(String[] args) {
int score = 70;
if (score >= 60) {
System.out.println("合格です!");
}
}
}
このプログラムを実行すると、点数が六十点以上なので「合格です!」と出力されます。
合格です!
もし点数が六十点未満なら、条件が偽(false)になり、ifブロックの中は実行されません。このように、Javaのif文は条件によって処理の流れを変える非常に基本的な制御構造です。
2. 条件によって処理を分ける仕組みとは?
Javaでは、if文を使って「ある条件のときだけ実行」したり、「そうでないときに別の処理をする」こともできます。そのときに使うのがelseやelse ifです。条件を段階的に判定して、適切な処理を選ぶことができるのです。
例えば、試験の点数で「八十点以上なら優秀、六十点以上なら合格、その他は不合格」と判定するプログラムは次のように書けます。
public class IfElseExample {
public static void main(String[] args) {
int score = 85;
if (score >= 80) {
System.out.println("優秀です!");
} else if (score >= 60) {
System.out.println("合格です!");
} else {
System.out.println("不合格です…");
}
}
}
優秀です!
このように、Javaのif文は上から順番に条件を評価します。最初に真になった部分の処理だけが実行され、その後の条件はスキップされます。つまり、複数の条件を使い分けたいときでも、スマートに処理を切り替えることができるのです。
また、条件を複数組み合わせたいときは、論理演算子(&&:かつ、||:または)を使います。たとえば、「六十点以上かつ欠席がゼロなら合格」というような条件は次のように書けます。
public class LogicalIfExample {
public static void main(String[] args) {
int score = 75;
int absence = 0;
if (score >= 60 && absence == 0) {
System.out.println("出席も完璧、合格です!");
} else {
System.out.println("条件を満たしていません。");
}
}
}
Javaのif文は単なる条件分岐ではなく、プログラムの“判断力”を与える重要な制御構造です。ifを使いこなせるようになると、ユーザーの入力やシステムの状態によって動作を変えるアプリケーションを作れるようになります。
Springの@Controllerでも、フォームの入力内容を判定して次の画面を切り替えるなど、if文は頻繁に使われます。たとえばログイン処理で「ユーザー名とパスワードが一致していればメニュー画面へ、そうでなければエラー画面へ」といった条件分岐を実現できます。
開発環境がpleiades+Gradleなら、プロジェクトを作成してControllerクラスを追加し、if文の動きを実際に試すことができます。実際のWebアプリケーション開発でも、このような条件判定が至るところで使われているのです。
プログラムの動作を理解するときは、「もし~なら~する、そうでなければ~する」という人間の思考をそのままJavaの構文に置き換えて考えると分かりやすいです。if文を理解すれば、複雑な制御構造の基礎がしっかり身につき、次のswitch文やループ構文にもスムーズに進めます。
3. if文の基本構文と動作の流れ
Javaのif文は、プログラムの流れを制御するための最も基本的な制御構造です。条件式を評価し、true(真)ならブロック内の処理を実行し、false(偽)ならスキップします。これが「条件分岐」と呼ばれる仕組みです。
まずは基本的な構文を改めて確認してみましょう。
if (条件式) {
// 条件がtrueのときに実行される処理
}
プログラムの実行の流れを理解するには、次のようなサンプルがわかりやすいです。
public class IfFlowExample {
public static void main(String[] args) {
int temperature = 30;
System.out.println("温度をチェック中...");
if (temperature > 25) {
System.out.println("冷房をつけます。");
}
System.out.println("処理が完了しました。");
}
}
温度をチェック中...
冷房をつけます。
処理が完了しました。
このように、条件式がtrueであればブロック内が実行され、条件がfalseならスキップされます。つまり、条件判定によってプログラムの流れが分岐しているのです。ここで大切なのは、trueとfalseという論理値の概念です。
trueは「正しい」「はい」、falseは「間違い」「いいえ」という意味で、Javaの世界ではすべての条件が最終的にこの二つのどちらかに評価されます。
4. if〜else文・if〜else if〜else文の使い方
if文の基本がわかったら、次は条件が成り立たなかった場合の処理を追加してみましょう。そのときに使うのがelseです。もし条件がfalseなら、elseブロックの中が実行されます。
public class IfElseBasic {
public static void main(String[] args) {
int score = 55;
if (score >= 60) {
System.out.println("合格です!");
} else {
System.out.println("不合格です。");
}
}
}
不合格です。
このようにif〜else構文では、「条件を満たすとき」と「そうでないとき」の両方の処理を明確に分けることができます。さらに、複数の条件を順番に判定したい場合は、else ifを使います。
public class IfElseIfExample {
public static void main(String[] args) {
int score = 78;
if (score >= 90) {
System.out.println("特待生です!");
} else if (score >= 70) {
System.out.println("合格です!");
} else if (score >= 60) {
System.out.println("ぎりぎり合格です。");
} else {
System.out.println("不合格です。");
}
}
}
合格です!
Javaでは上から順に条件を評価していき、最初にtrueになったブロックだけが実行されます。したがって、条件の並べ方にも注意が必要です。広い条件を先に書くと、後の条件が無視されてしまうことがあります。
たとえば「スコアが六十点以上なら合格、七十点以上なら優秀」と書くと、六十点以上の条件が先に真になってしまうため、七十点以上でも「合格」としか表示されません。このような場合は条件の順序を工夫することが大切です。
Springの@Controllerでも、画面遷移の条件をif〜elseで分けることがあります。たとえばログイン処理では次のように書けます。
@Controller
public class LoginController {
@PostMapping("/login")
public String login(@RequestParam String user, @RequestParam String pass) {
if ("admin".equals(user) && "1234".equals(pass)) {
return "menu";
} else {
return "error";
}
}
}
このように、Webアプリケーションでもif文は非常に重要です。条件によってビュー(画面)を切り替えたり、処理の流れをコントロールできます。
5. 条件式に使える演算子(比較演算子・論理演算子)
Javaのif文では、条件式の中で「値を比較する」「複数条件を組み合わせる」といった処理を行います。そのために使うのが演算子です。ここでは比較演算子と論理演算子の両方を理解しておきましょう。
比較演算子
比較演算子は、二つの値を比較してtrueかfalseを返します。よく使うものを表にまとめると次の通りです。
==:等しい!=:等しくない>:より大きい<:より小さい>=:以上<=:以下
ここで初心者がよく混乱するのが「==」と「=」の違いです。=は「代入演算子」で、値を変数に代入するときに使います。一方の==は「比較演算子」で、左右の値が同じかどうかを判定します。
int a = 5;
int b = 5;
if (a == b) { // 比較(等しいか判定)
System.out.println("同じ値です。");
}
if (a = b) { // エラー:代入は真偽値ではない
System.out.println("これは間違いです!");
}
代入と比較を混同すると、思わぬバグにつながるので注意が必要です。特にC言語経験者はうっかり書いてしまうことがあるので、Javaでは==を比較専用として意識して使いましょう。
論理演算子
論理演算子は、複数の条件を組み合わせたいときに使います。代表的なのは次の二つです。
&&:「かつ」(両方が真なら真)||:「または」(どちらかが真なら真)
int age = 25;
boolean hasTicket = true;
if (age >= 18 && hasTicket) {
System.out.println("入場できます。");
}
if (age < 18 || !hasTicket) {
System.out.println("条件を満たしていません。");
}
入場できます。
また、!(論理否定演算子)を使うと、条件の結果を反転できます。つまり、trueをfalseに、falseをtrueに変えることができるのです。
boolean isLogin = false;
if (!isLogin) {
System.out.println("ログインしてください。");
}
ログインしてください。
このように、if文の条件式では演算子を上手に使うことで柔軟な条件分岐が可能になります。特にWebアプリ開発では、「入力が空ではない」「フラグがオンになっている」など、複数の条件を組み合わせて判定する場面が非常に多いです。
Springの@Controllerでは、ユーザーの入力内容やリクエストパラメータをif文でチェックして、正しい値が送信された場合だけ次の画面へ進むといった処理を実装します。例えば次のように書けます。
@Controller
public class RegisterController {
@PostMapping("/register")
public String register(@RequestParam String name, @RequestParam int age) {
if (name != null && !name.isEmpty() && age >= 18) {
return "success";
} else {
return "form";
}
}
}
このように、条件式に比較演算子と論理演算子を組み合わせることで、入力内容をしっかりと検証し、安全な処理の流れを作ることができます。Javaのif文はシンプルながらも、アプリケーションの品質を支える非常に重要な要素なのです。
6. ネストされたif文(ifの中にifを入れる)
Javaのif文は、条件分岐をさらに細かくしたい場合に「ネスト構造(入れ子)」にすることができます。つまり、ifの中にもう一つのifを書くことで、複雑な条件を段階的に判定できるのです。
例えば、「テストが六十点以上なら合格、ただし八十点以上なら表彰する」といったように、条件の中でさらに条件を追加したいときに使います。
public class NestedIfExample {
public static void main(String[] args) {
int score = 85;
if (score >= 60) {
System.out.println("合格です!");
if (score >= 80) {
System.out.println("さらに優秀賞を獲得しました!");
}
} else {
System.out.println("残念ながら不合格です。");
}
}
}
合格です!
さらに優秀賞を獲得しました!
このように、外側のifで「合格しているか」を判定し、内側のifで「その中でも特に優秀か」を確認しています。ネストされたif文は、条件を段階的に評価するのにとても便利です。
ただし、ネストを深くしすぎるとコードが読みにくくなるため注意が必要です。複雑な条件が増えてきたら、else ifやメソッド化で整理するのがおすすめです。
現場の開発でも、ネストされたif文は「ログインしていて、かつ管理者権限がある場合」など、二段階チェックが必要な場面でよく使われます。
boolean isLogin = true;
boolean isAdmin = true;
if (isLogin) {
System.out.println("ログイン済みです。");
if (isAdmin) {
System.out.println("管理者メニューを表示します。");
}
}
ログイン済みです。
管理者メニューを表示します。
このように、ネストを使えば条件を分解して段階的に処理を分けることができます。特にWebアプリケーションでは、ユーザー状態や入力内容を複数チェックする必要があるため、if文のネスト構造は欠かせません。
7. 実践的なサンプル(Springの@Controllerで条件分岐する例)
ここからは、実際にSpringの@Controllerを使って、if文による条件分岐を実践的に使う例を見てみましょう。開発環境はpleiades+Gradleを前提とします。
以下の例では、ログインフォームから送信されたユーザー名とパスワードをチェックして、管理者・一般ユーザー・エラー画面のいずれかに分岐します。
@Controller
public class AuthController {
@PostMapping("/auth")
public String auth(@RequestParam String user, @RequestParam String pass) {
if ("admin".equals(user)) {
if ("9999".equals(pass)) {
// 管理者ログイン成功
return "admin-menu";
} else {
// パスワード不一致
return "error";
}
} else if ("guest".equals(user)) {
if ("0000".equals(pass)) {
// 一般ユーザー
return "user-menu";
} else {
return "error";
}
} else {
// 該当ユーザーなし
return "notfound";
}
}
}
このように、ネストされたif文を使うことで、まず「ユーザー名を判定」し、その中でさらに「パスワードをチェック」しています。これにより、細かい条件分岐が可能になります。
たとえば、管理者だけが特定のメニューに入れるようにしたい場合や、ユーザーの権限ごとに遷移先を変えたい場合に非常に役立ちます。
実際の業務システムでも、こうした条件分岐は非常に多く使われています。たとえば、在庫管理システムでは「在庫が〇個以上なら販売可能」「在庫がゼロなら入荷待ち」といった分岐を行います。
int stock = 3;
if (stock > 0) {
System.out.println("販売可能です。");
} else {
System.out.println("在庫切れです。");
}
販売可能です。
また、複数の条件を組み合わせて、ユーザーの入力や商品の状態をチェックすることもできます。
String status = "予約";
int quantity = 2;
if ("予約".equals(status)) {
if (quantity > 0) {
System.out.println("予約を確定しました。");
} else {
System.out.println("在庫が足りません。");
}
}
予約を確定しました。
このように、ネストされたif文は実際の業務ロジックでも非常に自然に使われます。条件分岐の仕組みを理解しておくことで、Webアプリケーション全体の動作を安全かつ柔軟に制御できるようになります。
8. if文を使いこなすための練習ポイント
ここまででJava if文の基本から実践までを見てきましたが、実際に使いこなすためには練習が欠かせません。ここでは、初心者がスムーズにステップアップするための練習ポイントを紹介します。
まずは「条件を日本語で考える」ことから始めましょう。たとえば「もし〇〇なら~する」という形で言葉にしてみると、どんな条件式が必要か自然と見えてきます。Javaのif文は、まさにその思考をそのままコード化したものです。
次に、「true」「false」の意味を体で覚えることが大切です。条件がtrueになったときにどの処理が動くのか、逆にfalseのときに何がスキップされるのかを、コンソール出力で確認しながら試してみましょう。
例えば次のような簡単な練習を繰り返すと、条件分岐の感覚がつかめます。
int age = 20;
boolean isMember = true;
if (age >= 18 && isMember) {
System.out.println("会員としてサービスを利用できます。");
} else {
System.out.println("利用条件を満たしていません。");
}
また、ネストされたifを使って「複数段階の条件チェック」を作ってみるのも良い練習になります。
int score = 92;
if (score >= 60) {
System.out.println("合格です。");
if (score >= 90) {
System.out.println("満点に近い成績ですね!");
}
}
合格です。
満点に近い成績ですね!
練習を重ねるうちに、「条件の順序」や「ネストの深さ」によって結果が変わることも体感できます。これは、Javaの条件分岐を理解する上で非常に重要な感覚です。
さらに、Spring Controllerでの実践を通じて、フォーム入力やボタンのクリックに応じて条件分岐を試してみるのもおすすめです。たとえば、入力された値によって画面を切り替えるような動作を作ることで、Webアプリらしい動きを理解できます。
開発現場では「条件を整理してわかりやすく書くこと」が評価されます。ネストを使いすぎず、読みやすくする工夫を意識してみましょう。条件を分けたほうが理解しやすいと感じたら、if文を分けて書くのも立派な設計力です。
このように、if文は単なる文法ではなく、アプリケーションの「考え方」を表現する道具です。初心者のうちにしっかりと使いこなせるようになると、後のswitch文や例外処理、複雑なビジネスロジックの実装にも自然に対応できるようになります。