三項演算子と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フィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- 三項演算子
- 三項演算子のネスト
- 三項演算子とif/else
- 可読性を損なう落とし穴