Javaのif文の書き方を完全解説【基本構文から現場で使える実践まで】

Mirai

Javaのif文ってどう書くんだろう。調べてみたけど、なんか難しそうで…

Zetto

if文は条件分岐の基本です。構文さえ覚えれば、あとは組み合わせるだけですよ。

Javaを学び始めて最初につまずくのが、java if 文の書き方です。

「条件によって処理を変えたい」という場面は、現場のコードでも毎日のように出てきます。基本構文から、現場で使える実践的なテクニックまで、一緒に整理していきましょう。

Zettoのライタープロフィール

本記事の専門性
6年目エンジニアのZettoです。元々は実務でJavaをメインとした開発を担当していました。また、Java Goldの資格を保有しています。
if文を含む条件分岐の設計経験から、初心者向けに実践的なテクニックをお伝えしますね。

if文を理解しないままコードを書き続けると、バグの原因を特定できなかったり、読みにくいコードが増えていったりします。結果として、チームのコードレビューで毎回指摘を受けてしまう…そんな状況になりかねないです。

この記事を読むことで、次のことが身につきます。

  • if文の基本構文と、else・else ifの使い方が理解できる
  • 論理演算子を使った複合条件の書き方がわかる
  • 現場でハマりがちなnullチェックや文字列比較の正しい方法がわかる
  • コードを読みやすく保つガード節・boolean変数の活用法がわかる
  • 演習問題で実際に手を動かして確認できる

ぜひ参考にしてみてください。

目次

Javaのif文とは|条件分岐の基本を理解しよう

Java if文と条件分岐

Javaでif文を使いこなすために、まずは基本の仕組みを押さえておきましょう。

この章では、次の内容を順に解説します。

  • if文とは何か・いつ使うのか
  • if文の基本構文とサンプルコード
  • else文・else if文で複数の条件に対応する
  • 比較演算子の種類と使い方

それぞれ解説していきます。

if文とは何か・いつ使うのか

if文は、「ある条件が成り立つときだけ処理を実行する」ための仕組みです。

日常の言葉に置き換えると、「もし〜なら、〇〇する」という考え方ですね。

たとえば「ログインしているユーザーにだけ画面を表示する」「スコアが80点以上なら合格と表示する」といった処理が、if文で実現できます。

プログラムの中で「場合分け」が必要になるときは、ほぼすべてif文の出番です。

if文の基本構文とサンプルコード

if文の基本的な書き方は、以下の通りです。

if (条件式) {
    // 条件が true のときに実行される処理
}

実際のコードで確認してみましょう。

int score = 85;

if (score >= 80) {
    System.out.println("合格です");
}

この例では、scoreが80以上のときだけ「合格です」と表示されます。

条件がfalseの場合、{}の中の処理はスキップされます。

else文・else if文で複数の条件に対応する

条件に合わない場合の処理を書くときは`else`を使います。

さらに複数の条件に分岐したいときは`else if`を使いましょう。

int score = 65;

if (score >= 80) {
    System.out.println("合格です");
} else if (score >= 60) {
    System.out.println("ギリギリ合格です");
} else {
    System.out.println("不合格です");
}

else ifはいくつでも並べられますが、上から順に条件を評価して、最初にtrueになったブロックだけが実行されます。

条件の順番を間違えると意図しない結果になるので、注意が必要です。

比較演算子の種類と使い方(==・!=・>・<など)

if文の条件式で使う比較演算子をまとめておきます。

基本の演算子を押さえておくと、条件式をスムーズに書けるようになります。

  • ==(等しい) : a == b はaとbが等しいときtrue
  • !=(等しくない) : a != b はaとbが異なるときtrue
  • >(より大きい) : a > b はaがbより大きいときtrue
  • <(より小さい) : a < b はaがbより小さいときtrue
  • >=(以上) : a >= b はaがb以上のときtrue
  • <=(以下) : a <= b はaがb以下のときtrue

このあたりはプログラミング全般で共通して使う概念なので、覚えておくと他の言語を学ぶときにも役立ちます。

if文の基本は「条件式が true なら処理を実行する」というシンプルなルールです。

この基本をしっかり押さえた上で、次の章では条件の組み合わせ方を見ていきましょう。

条件を組み合わせる|論理演算子とネストif文の使い方

論理演算子とネストif

if文は単独の条件だけでなく、複数の条件を組み合わせることもできます。

この章では、次の内容を解説します。

  • AND(&&)・OR(||)・NOT(!)で条件を組み合わせる
  • ネスト(入れ子)if文の書き方と注意点
  • 三項演算子で条件分岐を1行で書く方法

組み合わせを覚えると、if文でできることが一気に広がりますよ。

AND(&&)・OR(||)・NOT(!)で条件を組み合わせる

複数の条件をまとめて書きたいときは、論理演算子を使います。

3つの演算子の意味と使い方を確認しましょう。

  • &&(AND) : 両方の条件が true のときだけ true
  • ||(OR) : どちらか一方でも true なら true
  • !(NOT) : 条件の true と false を反転させる
int age = 20;
boolean hasMembership = true;

// AND:年齢が18以上かつ会員のとき
if (age >= 18 && hasMembership) {
    System.out.println("入場できます");
}

// OR:年齢が60以上または障害者手帳を持っているとき
boolean hasDisabilityCard = false;
if (age >= 60 || hasDisabilityCard) {
    System.out.println("割引が適用されます");
}

// NOT:会員でないとき
if (!hasMembership) {
    System.out.println("会員登録が必要です");
}

ネスト(入れ子)if文の書き方と注意点

if文の中にさらにif文を書くことを「ネスト(入れ子)」と呼びます。

複雑な条件を段階的にチェックしたいときに使います。

int score = 85;
boolean isStudent = true;

if (score >= 60) {
    if (isStudent) {
        System.out.println("学生合格");
    } else {
        System.out.println("一般合格");
    }
}

ただし、ネストが深くなるとコードが読みにくくなるのが難点です。

目安として、ネストは2段階まで。それ以上は後述するガード節でシンプルにできることが多いです。

三項演算子で条件分岐を1行で書く方法

三項演算子を使うと、シンプルな条件分岐を1行でコンパクトに書けます。

書き方は「`条件式 ? trueのとき : falseのとき`」です。

int score = 75;
String result = score >= 60 ? "合格" : "不合格";
System.out.println(result); // 合格

ただし、処理が複雑になると読みにくくなるので、あくまで「値の代入」のような単純な場面で使うのがおすすめです。

論理演算子・ネスト・三項演算子、この3つを使いこなせると、if文の表現力がぐっと上がります。

次の章では、現場でよく引っかかるポイントと、それを回避する実践的な書き方を紹介します。

Mirai

&&とか||とか記号が多くて、最初は混乱しそう…

Zetto

最初は&&だけ使えるようになれば十分です。使っているうちに自然と覚えられますよ!

現場で差がつくif文の書き方|初心者がハマる落とし穴と実践テクニック

if文の実践テクニック

基本構文を覚えたあと、現場で実際につまずくのがこの章のテーマです。

この章では、次の内容を紹介します。

  • 文字列比較は`==`ではなく`equals`を使う理由
  • NullPointerExceptionを防ぐnullチェックの書き方
  • ガード節でネストを解消しコードを読みやすくする
  • boolean変数で条件式を読みやすく整理する
  • if文とswitch文の使い分け基準

文字列比較は==ではなくequalsを使う理由

Javaで文字列を比較するとき、`==`を使うと正しく動かないことがあります。

文字列の比較には必ず`equals`メソッドを使いましょう。

String input = new String("admin");

// NG:参照先が同じかを比べているので意図通りに動かないことがある
if (input == "admin") {
    System.out.println("ログイン成功");
}

// OK:文字列の中身を比較する
if (input.equals("admin")) {
    System.out.println("ログイン成功");
}

==は「同じオブジェクトか」を比べる演算子です。

文字列の場合、同じ内容でも異なるオブジェクトになる場合があり、==ではfalseになってしまいます。

僕自身も1社目の研修で、この違いを説明できずに先輩に指摘されたことがありました。

NullPointerExceptionを防ぐnullチェックの書き方

`equals`を使うときに気をつけたいのが、変数が`null`の場合です。

nullの変数に対してequalsを呼び出すとNullPointerException(ヌルポインター例外)が発生します。

String input = null;

// NG:nullに対してequalsを呼ぶとNullPointerException
if (input.equals("admin")) {
    System.out.println("ログイン成功");
}

// OK:文字列リテラル側からequalsを呼ぶ
if ("admin".equals(input)) {
    System.out.println("ログイン成功");
}

// OK:事前にnullチェックをする
if (input != null && input.equals("admin")) {
    System.out.println("ログイン成功");
}

リテラル(定数)側からequalsを呼ぶ書き方は、現場でよく使われるテクニックです。

どちらの書き方でもよいですが、チームのコーディング規約に合わせて統一するのが大切です。

ガード節でネストを解消しコードを読みやすくする

ネストが深いコードを読みやすくする方法のひとつが「ガード節」です。

条件を満たさない場合を先に`return`で弾いてしまう書き方ですね。

// ネストが深い書き方
public void process(String input) {
    if (input != null) {
        if (!input.isEmpty()) {
            System.out.println("処理:" + input);
        }
    }
}

// ガード節を使った書き方
public void process(String input) {
    if (input == null) return;
    if (input.isEmpty()) return;

    System.out.println("処理:" + input);
}

ガード節を使うと、「正常系の処理」が末尾に来るので、コードの流れが追いやすくなります。

Javaの現場では読みやすさが評価につながることも多いので、積極的に使っていきたいテクニックです。

boolean変数で条件式を読みやすく整理する

条件式が長くなってきたら、boolean変数に意味のある名前をつけて整理するのが効果的です。

// 読みにくい例
if (age >= 18 && hasMembership && !isBanned) {
    System.out.println("入場できます");
}

// boolean変数で整理した例
boolean isAdult = age >= 18;
boolean isActiveMember = hasMembership && !isBanned;

if (isAdult && isActiveMember) {
    System.out.println("入場できます");
}

変数名が「条件の意味」を説明してくれるので、コードを読むだけで処理の意図がわかります。

コメントを書かなくても伝わる、セルフドキュメント化されたコードになりますよ。

if文とswitch文の使い分け基準

条件分岐にはif文のほかに`switch`文という選択肢もあります。

迷ったときは次の基準で判断するといいかなと思います。

  • if文を使う場面 : 範囲比較(>=や<=)、複雑な論理条件(&&や||)、nullチェックやBoolean判定
  • switch文を使う場面 : 特定の値との一致比較(数値・文字列・enumなど)が複数ある場合
// 値の一致比較が多い → switch文が読みやすい
String day = "Monday";

switch (day) {
    case "Monday":
    case "Tuesday":
    case "Wednesday":
    case "Thursday":
    case "Friday":
        System.out.println("平日です");
        break;
    case "Saturday":
    case "Sunday":
        System.out.println("休日です");
        break;
    default:
        System.out.println("不明な曜日です");
}

「値が一致するかどうかを複数比べる」場面ではswitch文の方がすっきりと書けます。

迷ったらif文で書いてみて、`case`がたくさん増えてきたらswitch文への書き換えを検討するといいですね。

現場のif文は「単に動けばいい」ではなく、「読みやすく・安全に」書くことが求められます。

この章で紹介したテクニックを意識するだけで、コードの品質がぐっと上がります。

Zetto

nullチェックとequalsの書き方は、Javaを書くうえでよく使います。

Javaのif文の演習問題

if文の演習問題

ここまで学んだ内容を、実際に手を動かして確認しましょう。

この章では、3つの演習問題を用意しました。

  • 基本のif〜else if〜elseを使った問題
  • 論理演算子を使った問題
  • ガード節・equalsを組み合わせた問題

解答例を確認する前に、まず自分でコードを書いてみることをおすすめします。

演習1:点数に応じてメッセージを出力しよう

scoreという変数に整数の点数が入っています。

次のルールでメッセージを出力するコードを書いてください。

  • 90点以上 → 「S評価:優秀です」
  • 70点以上90点未満 → 「A評価:よくできました」
  • 50点以上70点未満 → 「B評価:合格です」
  • 50点未満 → 「C評価:再試験が必要です」

解答例:

int score = 75;

if (score >= 90) {
    System.out.println("S評価:優秀です");
} else if (score >= 70) {
    System.out.println("A評価:よくできました");
} else if (score >= 50) {
    System.out.println("B評価:合格です");
} else {
    System.out.println("C評価:再試験が必要です");
}

ポイントは「条件の順番」です。90以上から先にチェックすることで、正しく分岐できます。

演習2:会員ステータスによって入場判定をしよう

次の条件を満たすとき「入場できます」、それ以外は「入場できません」と出力するコードを書いてください。

  • 年齢が18歳以上であること
  • かつ、`isMember`が`true`であること、または`isVip`が`true`であること

解答例:

int age = 22;
boolean isMember = false;
boolean isVip = true;

if (age >= 18 && (isMember || isVip)) {
    System.out.println("入場できます");
} else {
    System.out.println("入場できません");
}

`||`の部分を`()`でくくることで、「どちらか一方が true」という条件をまとめられます。

演算子の優先順位に注意が必要なので、迷ったら括弧をつけるのが安全です。

演習3:ユーザー名を検証するメソッドを書こう

validateUserというメソッドを作ってください。

引数に`String username`を受け取り、次のルールでメッセージを出力します。

  • `username`が`null`の場合 → 「ユーザー名がnullです」と出力してreturn
  • `username`が空文字の場合 → 「ユーザー名が空です」と出力してreturn
  • `username`が`”admin”`と一致する場合 → 「管理者ログイン成功」と出力
  • それ以外 → 「一般ユーザーとしてログイン:+ユーザー名」と出力

解答例:

public static void validateUser(String username) {
    if (username == null) {
        System.out.println("ユーザー名がnullです");
        return;
    }
    if (username.isEmpty()) {
        System.out.println("ユーザー名が空です");
        return;
    }
    if ("admin".equals(username)) {
        System.out.println("管理者ログイン成功");
        return;
    }
    System.out.println("一般ユーザーとしてログイン:" + username);
}

ガード節でnullチェックと空文字チェックを先に処理することで、メインの処理がシンプルになっています。

`”admin”.equals(username)`と、リテラル側からequalsを呼んでいる点もポイントです。

Mirai

演習3はnullチェックとガード節が両方使えて、いい練習になりますね!

Zetto

そうです。現場でもこのパターンはよく出てきますよ。しっかり手を動かして覚えておきましょう。

よくある質問(FAQ)

よくある質問

よくある質問と回答をまとめました。

  • if文の条件式にセミコロン(;)をつけると何が起きますか?
  • if文の条件にboolean型の変数を使うとき、== trueと書く必要はありますか?
  • java if 文はどのJavaバージョンから使えますか?

順に答えていきます。

Q1:if文の条件式にセミコロン(;)をつけると何が起きますか?

`if (条件式);`と書くと、セミコロンで文が終わってしまい、`{}`の中の処理が条件に関係なく常に実行されます。

初心者がよくやるミスのひとつです。

int x = 5;

// NG:セミコロンのせいでif文が空になっている
if (x > 3);
{
    System.out.println("これは常に実行される");
}

コンパイルエラーにはならないため、気づきにくいバグの原因になります。

IDEの警告をしっかり確認する習慣をつけておくといいですよ。

Q2:if文の条件にboolean型の変数を使うとき、== trueと書く必要はありますか?

不要です。`boolean`型の変数はそのまま条件式として使えます。

boolean isLoggedIn = true;

// 冗長な書き方
if (isLoggedIn == true) { ... }

// 推奨:そのまま使う
if (isLoggedIn) { ... }

// falseの場合はNOT演算子を使う
if (!isLoggedIn) { ... }

== trueと書いても動きますが、冗長で読みにくくなります。

booleanは「そのまま」使うのが、Javaらしい書き方です。

Q3:java if 文はどのJavaバージョンから使えますか?

if文はJavaの最初のバージョンから存在する基本構文です。

バージョンを気にせずどの環境でも使えます。

Java 14以降では`switch`式が正式機能として追加され、条件分岐の書き方の幅が広がりました。

ただし、基本的なif〜elseの構文は今後も変わらないので、しっかり覚えておいて損はないですね。

まとめ|java if 文の書き方は「基本」と「現場のコツ」の両輪で身につける

if文の基本と実践

この記事では、java if 文の書き方について、基本構文から現場で使える実践テクニックまで解説しました。

最後に要点をまとめておきます。

  • if文の基本は「条件が true なら処理を実行する」というシンプルなルール
  • else・else ifで複数条件に対応でき、比較演算子と組み合わせて使う
  • 論理演算子(&&・||・!)で複数の条件をまとめて書ける
  • 文字列比較は必ずequalsを使い、null安全な書き方を意識する
  • ガード節・boolean変数でコードをシンプルかつ読みやすく保てる
  • switch文との使い分けは「値の一致比較が多い場面」がswitch文の出番

if文はJavaを書く上で毎日使う基本中の基本です。

構文を覚えるだけでなく、現場で通用する「読みやすいコード」を意識しながら書く習慣をつけていきましょう。

Javaエンジニアとして転職・フリーランスを目指している方には、プログラミングスクールの選び方も重要なテーマです。

おすすめのスクールと選び方を詳しくまとめた記事があるので、あわせてチェックしてみてください。

Zetto

if文は書けば書くほど自然に身につきます。今日学んだことをもとに、ぜひ自分でコードを書いてみてください。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次