MEDIA

メディア

  1. TOP
  2. メディア
  3. プログラミング
  4. Javaのif文(if / else if / else)の書き方と使い分け

Javaのif文(if / else if / else)の書き方と使い分け

まず、Javaのif文は、条件式の結果(true/false)で処理を分岐させる基本構文です。ログイン状態や在庫の有無など、現実の要件は状況で処理が変わります。

さらに、if文は表示の切り替えだけでなく、不正入力の遮断や例外回避にも直結します。動くことより、壊れにくい設計に近づけるのがポイントです。

そのため、本記事ではif / else if / elseの基本から、論理演算子、ネスト回避、三項演算子、switchとの使い分けまでを例付きで整理します。最後に練習問題で定着も狙います。

if文でできること(条件分岐の基本)

まず、if文は「条件を満たすときだけ処理する」ための仕組みです。プログラムは上から順に実行されますが、要件は分岐を必要とします。

一方で、条件分岐は安全性にも関わります。例えば、入力が不正なら処理を止める、危険な操作を実行しない、nullの可能性を先に潰す、といった守りの実装に使えます。

したがって、重要なのは「条件がtrueかfalseか」だけです。どこで分岐させ、どんな条件にするかで、読みやすさとバグ率が大きく変わります。

if文の基本構文

まず、最小形は if (条件式) { ... } です。条件式がtrueのときだけ、波括弧の中が上から実行されます。

さらに、Javaでは条件式はbooleanとして評価できる式である必要があります。数値をそのまま条件にできないので、比較してtrue/falseを作る発想が基本です。仕様上も、if文は式の評価結果で実行を分けます。外部の一次情報としてOracleの仕様も参照できます。

一方で、{} は範囲を決める重要な記号です。1行なら省略できますが、後から行を追加した瞬間に事故が起きやすいので、初心者ほど常に付けるのが安全です。

if文の基本例:数値を判定する

例えば、「10より大きいときだけ表示する」は次のように書けます。条件がfalseなら何も起きず、次の処理へ進みます。

int num = 15;

if (num > 10) {
  System.out.println("10より大きい数です");
}

そのため、初心者は「実行されない=バグ」と感じがちです。必要ならログを入れ、処理の流れを確認すると理解が早まります。

比較演算子で条件を作る(境界値が重要)

まず、条件式では ==!=>>=<<= を使って判定します。これで値の一致や範囲をtrue/falseに変換できます。

さらに、比較では境界値を意識するとミスが減ります。合格ラインが60点なら score >= 60 が自然で、score > 60 だと60点が落ちます。

一方で、型にも注意が必要です。特に文字列は == ではなく equals を使うのが基本です。

if-else文:2択の条件分岐

まず、if単体は「trueのときだけ実行」です。一方でif-elseは、true側とfalse側をセットにでき、必ずどちらかが実行されます。

さらに、elseは「条件が満たされない場合の受け皿」です。ここに異常系(入力不正など)を書くと意図が伝わりやすくなります。

したがって、2択で重要なのは条件が本当に2択になっていることです。曖昧だとelseに想定外が流れ込み、後からバグに見える挙動になりがちです。

if-elseの例:偶数・奇数を判定する

例えば、偶数・奇数の判定は典型例です。余りが0なら偶数、そうでなければ奇数です。

int num = 5;

if (num % 2 == 0) {
  System.out.println("偶数");
} else {
  System.out.println("奇数");
}

一方で、0や負数など別扱いが必要なら、else ifで分ける方が安全です。

else if:複数条件の分岐(順序が仕様になる)

まず、else ifは上から順に評価し、最初にtrueになった分岐だけを実行します。複数のifを並べるより意図が明確です。

さらに、判定順序がそのまま仕様になります。条件が重なる場合は、優先度が高い(範囲が狭い)条件を上に置きます。

そのため、最後にelseを付けると「それ以外」を明示できます。想定外の値が来ても挙動が安定します。

else ifの例:点数に応じて評価を分ける

例えば、点数評価は境界と順序の重要性が出ます。90以上、70以上、それ以外の順に書くと自然です。

int score = 74;

if (score >= 90) {
  System.out.println("A");
} else if (score >= 70) {
  System.out.println("B");
} else {
  System.out.println("C");
}

一方で、score >= 70 を先に書くと、90以上もBに吸われます。重なる条件では「上ほど厳しい」を基本にします。

論理演算子(&& / || / !)で条件を組み合わせる

まず、実務の条件は1つではありません。「ログイン済み、かつ管理者」「土曜または日曜」など、複数条件を組み合わせるのが普通です。

さらに、読みやすさのコツは日本語で音読できる形にすることです。複雑なら変数名を整え、必要なら判定をメソッドに切り出します。

また、Javaの &&|| には短絡評価があります。左側で結果が確定すれば右側は評価されません。これは性能だけでなく、例外回避にも効きます。

AND(&&)の例:範囲チェックをする

例えば、20代判定はANDが得意です。20以上かつ30未満を同時に満たす必要があります。

int age = 25;

if (age >= 20 && age < 30) {
  System.out.println("20代");
}

さらに、nullチェックで短絡評価が活躍します。左がfalseなら右が呼ばれず、NPEを防げます。

if (user != null && user.isActive()) {
  System.out.println("有効ユーザーです");
}

OR(||)の例:いずれかに一致するか判定する

例えば、土日判定はORで書けます。候補が増えるほど長くなるので、必要なら集合で表現すると読みやすくなります。

String day = "Sat";

if ("Sat".equals(day) || "Sun".equals(day)) {
  System.out.println("休み");
} else {
  System.out.println("平日");
}

NOT(!)の例:条件を反転する(ガード節と相性が良い)

まず、NOTは「〜ではない」を表します。二重否定を避ける命名にすると読みやすくなります。

さらに、ガード節として使うとネストを浅くできます。前提条件を満たさない場合に早期returnする設計です。

ネスト(入れ子)のif文と、避ける書き方

まず、ネストは段階的に条件を絞るのに便利です。一方で深くなるほど可読性が落ち、修正時の事故が増えます。

そのため、ネストを避ける定番はガード節です。前提を先に弾けば、後続は安心して読めます。

さらに、条件が自然にまとまるなら結合(isLoggedIn && isAdmin)も有効です。複雑なら判定をメソッド分割し、if文には意図だけを書きます。

三項演算子(条件演算子)で短く書く(使いどころに注意)

まず、単純なif-elseで値を代入するだけなら、三項演算子で短く書けます。読み下しが一瞬で終わる場面が向いています。

一方で、条件が複雑、ネストする、分岐の中身が重い場合は読みにくくなります。チームでは「誤読しないこと」を優先し、if-elseに戻す判断も重要です。

なお、三項演算子の実務的な注意点は、次の内部記事で詳しく整理しています。

switch文との違いと使い分け

まず、if-elseは範囲判定や複合条件に強く、ほとんどの条件分岐を表現できます。一方でswitchは「値の一致」を列挙するのが得意です。

さらに、switchは扱える型や書き方にルールがあります。従来のswitchではbreak忘れでフォールスルーが起きる点も注意です。仕様ベースの詳細はOracleの一次情報を参照できます。

したがって、条件が「一致判定の列挙」ならswitch、「範囲や複合条件」ならif-elseが目安です。分岐が増えすぎるなら、設計やデータ構造の見直しも検討します。

初心者がよくあるミス(=と==、文字列比較、{}の省略)

まず、= は代入、== は比較です。boolean同士では代入式が成立し、意図せず条件がtrueになる事故もあり得ます。

次に、文字列は == ではなく equals が基本です。安全にするなら "Sat".equals(day) のように定数側から呼ぶと、nullでも落ちにくくなります。

さらに、{} の省略は後から修正するときに事故が多発します。チーム開発では「必ず波括弧を書く」ルールに寄せると安全です。

なお、否定条件(NOT)を絡めた読みやすい設計は、次の内部記事も参考になります。

練習問題:if文で条件分岐に慣れる

まず、基礎を定着させるには「日本語の条件→コード」へ落とす練習が効きます。境界と順序を意識して解いてください。

問題1:数値の範囲で分岐する

整数numを判定し、「0以下」「1〜9」「10以上」を表示してください。境界(0、9、10)を明確にします。

問題2:文字列の候補一致を判定する

曜日dayが「Sat」または「Sun」なら「休み」、それ以外は「平日」と表示してください。equals|| を使います。

問題3:ANDで範囲を作る

年齢ageが20〜29なら「20代」、それ以外なら「20代ではない」と表示してください。age >= 20 && age < 30 を素直に読める形にします。

まとめ:Javaのif文を正しく書けるようにする

まず、if / else if / elseは評価順と境界値が肝です。条件が重なる場合は、狭い条件を上に置くと安全です。

さらに、論理演算子の短絡評価はNPE回避に直結します。ネストを深くしないために、ガード節やメソッド分割も活用します。

そのため、基礎文法でも「誤読しない条件」「事故らない書き方」を意識すると、動くコードから壊れにくい設計へ進化します。

つまずいたら、現役エンジニアと一緒に解決しよう

この記事で扱った【Javaのif文・条件分岐】は、独学だと細部で詰まりやすい分野です。さらに理解を深めたい方は、Zerocodeで実務直結の学習を進めてみませんか。

現役エンジニア1on1

コード添削・詰まり解消を丁寧にサポート。

実務設計まで網羅

Java/SQL/Spring Bootを体系的に習得。

ポートフォリオ支援

現場で刺さる成果物づくりを伴走。

完全オンライン

時間と場所を選ばず学べます。

Join us! 未経験からエンジニアに挑戦できる環境で自分の可能性を信じてみよう 採用ページを見る→

記事監修

ドライブライン編集部

[ この記事をシェアする ]

記事一覧へ戻る