0Pricing
Java Academy · レッスン

三項演算子とif/else

それぞれを使う場面を学びます。

「三項演算子とif/else」はCoddyKit上の無料Java Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはJava Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Java Academyコースには全4レッスンが含まれています。

2つのツール、1つの目的

三項演算子と if/else はどちらも、条件に基づいて分岐できます。

主な違いは、三項演算子が値を生成する式であるのに対し、if/else は処理を実行する文であることです。

適切な方を選ぶと、コードを明確に保てます。

同じロジック、2つの方法

この if/else は、年齢に基づいてラベルを代入します。

動作しますが、単純な選択に5行かかります。

int age = 16;
String status;
if (age >= 18) {
    status = "adult";
} else {
    status = "minor";
}

三項演算子版

同じ代入を三項演算子で書くと、1行に収まります。

変数の宣言と初期化を、重複なしで1つの手順にまとめられます。

int age = 16;
String status = age >= 18 ? "adult" : "minor";

三項演算子は値を返す

三項演算子は式であるため、値が必要な場所ならどこでも使えます。代入、返却、引数などです。

if は値として使用できず、処理の流れを制御するだけです。

public class Main {
    public static void main(String[] args) {
        int n = 5;
        System.out.println(n > 0 ? "positive" : "non-positive");
    }
}

if/else はより多くの処理ができる

if/else では、各分岐で複数の文を実行できます。ログの記録、複数の変数の更新、メソッドの呼び出しなどです。

三項演算子は1つの値の生成に限られるため、処理のブロックを含めることはできません。

int balance = -10;
if (balance < 0) {
    System.out.println("Overdrawn!");
    balance = 0;
} else {
    System.out.println("OK");
}

副作用には if/else を使う

各分岐で何かを実行する必要がある場合(出力、保存、スローなど)は、if/else を使います。

三項演算子は値を選択するためのもので、処理を実行するためのものではありません。副作用を三項演算子に無理に詰め込むと、読みやすさが損なわれます。

// Prefer if/else when branches act
boolean error = true;
if (error) {
    System.out.println("Logging error");
}

代入には三項演算子を使う

両方の分岐で同じ変数に単純に代入する場合、三項演算子を使うと重複をなくせます。

if/else では変数名を2回繰り返しますが、三項演算子では1回だけ書きます。

public class Main {
    public static void main(String[] args) {
        int hour = 14;
        String shift = hour < 12 ? "morning" : "afternoon";
        System.out.println(shift);
    }
}

型の規則が異なる

三項演算子では、式の型を1つにするため、両方の分岐に互換性のある型が必要です。

if/else にはこの規則はありません。各分岐は独立しており、組み合わされた値を生成しないためです。

// ternary: branches must be compatible types
boolean ok = true;
String msg = ok ? "yes" : "no";

読みやすさのトレードオフ

短い単純な選択には、三項演算子の方がすっきりします。

複雑な条件や分岐が多い場合は、長いネストした三項演算子よりも if/else if の方が読みやすくなります。

将来の読み手が最も早く理解できる形式を選びましょう。

両方を組み合わせる

両方を組み合わせることもできます。制御フローには if/else を使い、分岐の中で小さな値の選択に三項演算子を使います。

これにより、処理と値の選択をそれぞれ自然な場所に置けます。

public class Main {
    public static void main(String[] args) {
        int qty = 3;
        if (qty > 0) {
            String word = qty == 1 ? "item" : "items";
            System.out.println(qty + " " + word);
        }
    }
}

簡単な指針

2つの単純な値のどちらかを代入または返却する場合は、三項演算子を使いましょう。

分岐で文を実行する場合、副作用がある場合、またはロジックが複数の条件にまたがる場合は、if/else を使いましょう。

クイックチェック

三項演算子よりも if/else を優先すべきなのはどのような場合でしょうか。

まとめ

三項演算子は値を選ぶ式であり、if/else は処理を実行する文です。

簡潔な単一値の代入や返却には三項演算子を使い、副作用、複数の文、複雑な分岐には if/else を使います。

両方を組み合わせることで、最も明確な結果にすることもできます。

よくある質問

「三項演算子とif/else」レッスンは無料ですか?

はい。「三項演算子とif/else」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Java Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Java Academyコースには全4レッスンが含まれています。

「三項演算子とif/else」で何を学びますか?

それぞれを使う場面を学びます。 ブラウザで直接実行するハンズオンコードでJava Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。

Java Academyを始めるのに経験は必要ですか?

事前経験は必要ありません。CoddyKitのJava Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。

「三項演算子とif/else」レッスンにはどのくらい時間がかかりますか?

ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。

このJava Academyレッスンでコードを書いて実行できますか?

はい。すべてのJava Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。

このコースのすべてのレッスン

  1. 三項演算子
  2. 三項演算子のネスト
  3. 三項演算子とif/else
  4. 可読性を損なう落とし穴
← Java Academyに戻る