Javaのif文(if / else if / else)の書き方と使い分け
CONTENTS
まず、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で実務直結の学習を進めてみませんか。
コード添削・詰まり解消を丁寧にサポート。
Java/SQL/Spring Bootを体系的に習得。
現場で刺さる成果物づくりを伴走。
時間と場所を選ばず学べます。