Webエンジニア向けプログラミング解説動画をYouTubeで配信中!
▶ チャンネル登録はこちら

【Java】三項演算子の書き方と使い方の基本

Javaの三項演算子について、if-else文との違いや基本的な書き方を理解できます。コードをより簡潔に書くメリットと、どのような場合に使うべきか、初心者にもわかりやすく解説します。

作成日: 更新日:

開発環境

  • OS: Windows10
  • Editor: Visual Studio Code
  • Java: 22.0.2

Javaの三項演算子とは

三項演算子は、if-else文を短く書くために使われる特別な演算子です。

通常のif-else文では、条件によって異なる処理を行う場合、複数行にわたって記述します。三項演算子を使用すると、同じ処理を1行で記述することが可能になります。

三項演算子の基本的な構文

三項演算子の構文は次のとおりです。

1条件式 ? 真の場合の値 : 偽の場合の値;
  • 条件式: 真(true)または偽(false)を返す式を記述します。例えば、a > b や number % 2 == 0 のような比較式です。
  • ?: 条件式の直後に配置し、真の場合の値と偽の場合の値を区切ります。
  • 真の場合の値: 条件式が真と評価されたときに結果となる値を記述します。
  • :: 真の場合の値と偽の場合の値を区切ります。
  • 偽の場合の値: 条件式が偽と評価されたときに結果となる値を記述します。

この演算子全体の結果は、条件式が真であれば「真の場合の値」に、偽であれば「偽の場合の値」になります。

使用例

具体的なコードで、if-else文と三項演算子を比較してみましょう。

例えば、ある整数が10以上かどうかを判定し、結果の文字列を変数に代入するケースを考えます。

if-else文の場合

1int score = 85;
2String result;
3
4if (score >= 100) {
5    result = "合格です";
6} else {
7    result = "不合格です";
8}
9
10System.out.println(result); // 不合格です

三項演算子の場合

上記のif-else文を三項演算子で書き換えると、次のようになります。

1int score = 85;
2String result = (score >= 100) ? "合格です" : "不合格です";
3
4System.out.println(result); // 不合格です

この例では、score >= 100 が条件式です。scoreが100以上の場合は"合格です"が、そうでない場合は"不合格です"がresult変数に代入されます。このように、1行で条件分岐と値の代入を完了させることができます。

三項演算子を使うメリットと注意点

メリット

  • コードが簡潔になり、行数を減らすことができます。
  • 特に、短い条件分岐で一時的な値を代入する際に、コードが読みやすくなる場合があります。

注意点

  • 条件式や真・偽の場合の値が複雑になると、かえってコードの可読性が低下する可能性があります。
  • そのため、シンプルな条件分岐に限定して使用することが推奨されます。複雑な条件分岐には、通常のif-else文を使用する方がコードが理解しやすくなります。

Javaの三項演算子の書き方

Javaの三項演算子は、条件に基づいて二つの値のどちらか一つを選択し、その値を返すための記述方法です。この演算子は、if-else文のように条件分岐を行いますが、主に値を代入する際に、より簡潔に記述できる特徴があります。

上記の書式について詳しく見ていきましょう。

  • 条件式: これは、結果がtrueかfalseになる式を記述する部分です。例えば、「age >= 20(年齢が20歳以上か?)」や「score > 80(スコアが80点より大きいか?)」のような式が入ります。
  • ?: これは三項演算子であることを示す区切り記号です。
  • 真の場合の値: 条件式がtrue(真)と評価された場合に返される値、または実行される式を記述します。
  • :: これも三項演算子であることを示す区切り記号で、真の場合と偽の場合を区切ります。
  • 偽の場合の値: 条件式がfalse(偽)と評価された場合に返される値、または実行される式を記述します。

具体的な例で考えてみましょう。 例えば、ある数値が偶数か奇数かを判定し、その結果を文字列として変数に格納したいとします。

通常のif-else文で書く場合は以下のようになります。

これを三項演算子で書くと、以下の1行にまとめることができます。

このように、三項演算子を使用すると、if-else文で値を代入するようなシンプルな条件分岐を非常に簡潔に記述することが可能です。

三項演算子のメリット

  • コードの簡潔さ: 特定の条件下での値の代入が1行で記述できるため、コードの行数を減らし、見た目をすっきりとさせることができます。
  • 可読性の向上(適切に使われた場合): シンプルな条件分岐であれば、if-else文よりも意図が明確になり、コードの読みやすさが向上する場合があります。

三項演算子の注意点

  • 複雑な条件には不向き: 条件式が複雑になったり、真の場合と偽の場合の処理が複数行にわたる場合、三項演算子を使うと逆にコードの可読性が低下することがあります。そのような場合は、無理に三項演算子を使わず、if-else文を使用する方が良いです。
  • 返される値の型: 真の場合の値と偽の場合の値は、同じ型か、互換性のある型である必要があります。異なる型を返そうとすると、コンパイルエラーになることがあります。

三項演算子は、Javaプログラムをより効率的かつ簡潔に記述するための一つのツールとして非常に便利です。適切な場面で活用することで、コードの品質を向上させることができます。

1条件式 ? 真の場合の値 : 偽の場合の値;

サンプルコード

java/chapter12/Sankou.java

このコードは、与えられた数値が「正の数」「負の数」「ゼロ」のどれであるかを判定し、その結果を出力する方法をJavaで示しています。プログラミングにおいて、特定の条件に基づいて処理を分けたい場合によく使用される「条件分岐」について、2つの異なる書き方で解説します。

Sankou.java
1public class Sankou {
2    public static void main(String[] args) {
3        // 数値が正の数、負の数、ゼロかを判定
4        // 数値を設定する
5        int number = -5;
6        // 結果を格納する変数を宣言する
7        String result;
8
9        // if文を使用する場合
10        if (number > 0) {
11            result = "正の数";
12        } else if (number < 0) {
13            result = "負の数";
14        } else {
15            result = "ゼロ";
16        }
17        System.out.println(result);
18
19        // 三項演算子を使用する場合
20        result = (number > 0) ? "正の数" : ((number < 0) ? "負の数" : "ゼロ");
21        System.out.println(result);
22    }
23}
24

おわりに

本記事では、Javaの三項演算子がif-else文をより簡潔に記述できる特別な演算子であることを学習しました。条件式 ? 真の場合の値 : 偽の場合の値;という基本的な構文を理解することで、シンプルな条件分岐での値の代入が1行で可能になり、コードを簡潔に書けるメリットがあります。しかし、複雑な条件ではif-else文のほうが可読性が高い場合もあるため、Sankou.javaのサンプルコードのように、状況に応じた使い分けが重要です。このように、三項演算子を適切に活用することで、より効率的で読みやすいコードを作成できるようになります。

関連コンテンツ