【Java入門】三項演算子でif文を簡潔に記述する方法

Javaには「if-else文」を1行で簡単に記述できる三項演算子があります。

しかし、初心者にとっては「書き方や使い方がいまいちわからない…」と悩んでいる方も多いのではないでしょうか?そこで、この記事では三項演算子について以下の内容で解説していきます!

  • 【基礎】三項演算子とは
  • 【基礎】三項演算子の使い方
  • 【発展】三項演算子を使う時の注意事項
  • 【発展】複数の条件をネスト(入れ子)で使う方法

三項演算子は使い方さえ覚えてしまえば、非常に便利ですのでぜひ理解しておきましょう!

>>>今すぐ「三項演算子の使い方」を知りたい方はこちら

 

三項演算子とは

三項演算子とは、if文のように条件分岐で使用する演算子です。三項演算子は、if文の省略や代替として使用します。

しかし、三項演算子は複雑な処理では読みにくくなり可読性を損なうので、処理によってif-else文と使い分けてください。三項演算子は次のように記述します。

条件式 ? trueの場合の戻り値 : falseの場合の戻り値

条件式が「true」の場合と、「false」の場合で戻り値を変えることができるので、条件分岐に使用できます。

三項演算子の使い方

ここでは、三項演算子の使い方を解説します。三項演算子はif文の代わりに使うことができます。

次のプログラムで三項演算子の使い方をif文と比較して確認してみましょう。

public class Main {
    public static void main(String[] args) {

        String str = "abc";
        String result;

        // 三項演算子の場合
        result = (str == "abc") ? "Samurai" : "Engineer";
        System.out.println(result);

        // if文の場合
        if (str == "abc") {
            result = "Samurai";
        } else {
            result = "Engineer";
        }
        System.out.println(result);
    }
}

実行結果:

Samurai
Samurai

このようにして、if文の代わり三項演算子を使うことができました。

三項演算子を使う時の注意事項

三項演算子は、条件によって返す値を変えたいときに使います。そのため、値を返さずに処理を分岐させたいときには使えません。処理を変えたいときにはif文を使うようにしましょう。

複数の条件をネスト(入れ子)で使う方法

三項演算子もネスト(入れ子)で使うことができます。次のサンプルプログラムでは三項演算子のネストを使って、数値が2で割り切れるか、3で割り切れるかという複数の条件で判定しています。

以下のサンプルコードを見てみましょう。

public class JavaIfOneLine {
 
    public static void main(String[] args) {
        int num = 4;
        String result = ((num % 2) == 0) ? ((num % 3 == 0)) ? "numは2でも3でも割り切れます" : "numは2では割り切れますが3では割り切れません" 
                : ((num % 3 == 0)) ? "numは2では割り切れませんが3では割り切れます" : "numは2でも3でも割り切れません";
        System.out.println(result);
    }

}

実行結果:

numは2では割り切れますが3では割り切れません

1つ目の条件式((num % 2) == 0)で、2で割り切れたのならの次の条件式((num % 3) == 0)に移り、3で割り切れるか判定しています。

次に条件にあった文字列を返します。1つ目の条件式((num % 2) == 0)で割り切れなかった場合は、次の行の条件式((num % 3) == 0)が判定されます。

次に条件にあった文字列を返します。このように4通りの判定結果を返すプログラムを三項演算子を使って作ることができました。ネストを使うことによって、複数の条件で分岐をさせる処理を行うことができました。

ちなみに、三項演算子を使わずif文で同じプログラムを組むと以下のようになります。

public class JavaIfOneLine {
 
    public static void main(String[] args) {
        int num = 4;
        String result;
        if((num % 2) == 0){
            if((num % 3) == 0){
                result = "numは2でも3でも割り切れます";
            }else{
                result = "numは2では割り切れますが3では割り切れません";
            }
        }else{
            if((num % 3) == 0){
                result = "numは2で割り切れませんが3では割り切れます";
            }else{
                result = "numは2でも3でも割り切れません";
            }
        }
        System.out.println(result);
    }

}

if文で処理が1行の時の省略について

if文で処理が1行の場合「{ }」を省略して1行で記述することができます。

こちらで詳しく解説していますので、ぜひ参考にしてくださいね!

【Java入門】if文で条件分岐(else、AND/OR、否定、省略、三項演算子)
更新日 : 2019年4月22日

三項演算子の使い方まとめ

ここでは、記事内で紹介した三項演算子の基本文法と使い方をまとめています。

三項演算子の書き方:

条件式 ? trueの場合の戻り値 : falseの場合の戻り値

条件式がtrue、falseによって異なる戻り値を指定できます。

三項演算子の使い方:

public class Main {
    public static void main(String[] args) {
        
        String str = "abc";
        String result1;
 
        result1 = (str == "abc") ? "strはabcです" : "strはabc以外です";
        System.out.println(result1);
 
    }
}
strはabcです

三項演算子の使い方(ネストする場合):

public class Main {
    public static void main(String[] args) {
        
        int num = 4;
        String result = ((num % 2) == 0) ? ((num % 3 == 0)) ? 
        "numは2でも3でも割り切れます" : "numは2では割り切れますが3では割り切れません" 
                : ((num % 3 == 0)) ? 
                "numは2では割り切れませんが3では割り切れます" : "numは2でも3でも割り切れません";
        System.out.println(result);
 
    }
}
numは2では割り切れますが3では割り切れません

まとめ

いかがでしたか?

今回は三項演算子の使い方を解説しました。三項演算子はif文よりも短い行で簡潔にコードを記述できるのでぜひ覚えてくださいね。もし、三項演算子についてを忘れてしまったらこの記事を確認してください!

「プログラミング、右も左もわからない…」という方にオススメ

当プログラミングスクール「侍エンジニア塾」では、これまで6000人以上のエンジニアを輩出してきました。

その経験を通してプログラミング学習に成功する人は、「目的目標が明確でそれに合わせた学習プランがあること」「常に相談できる人がそばにいること」「自己解決能力が身につくこと」この3つが根付いている傾向を発見しました。

侍エンジニア塾は上記3つの成功ポイントを満たすようなサービス設計に磨きをかけております。

cta_under_bnr

「自分のスタイルや目的に合わせて学習を進めたいな」とお考えの方は、ぜひチェックしてみてください。

書いた人

中沢 丈

フリーランスエンジニア。
システム開発からコンテンツ作成まで幅広く対応します。

連絡先はこちらです。
[email protected]

おすすめコンテンツ

まずはここから!初心者でも1から学べるプログラミング入門カリキュラム

転職成功で受講料0円!あなたもプログラミングを学んでエンジニアデビュー