Java 三項演算子 (条件演算子? 🙂




 
 
Java は、特定のタイプの if-then-else ステートメントを置き換えるためによく使用される特別な三項演算子 (三項演算子とも呼ばれる) を提供します。条件演算子の記号は「?:」で、この演算子を使用する場合はオペランドが 3 つ必要となるため、三項演算子と呼ばれます。条件演算子を使用するための一般的な構文構造は次のとおりです。

 

 result = <式> ? <文1> : <文3>; 

ここで、expression はブール式です。式が真の場合はステートメント 1 を実行し、それ以外の場合はステートメント 3 を実行します。この三項演算子は結果を返すことを期待しているため、単純な 2 分岐プログラムを実装するには、この条件演算子を使用できます。

以下は条件演算子を使用した例です。

int x、y、z;
x = 6、y = 2;
z = x>y ? x-y : x+y; 

ここでzの値を計算するには、まずx>yで表される値を判定し、真であればzの値はxy、そうでなければzの値はx+yとなります。明らかに、x>y 式は true と評価されるため、z の値は 4 になります。

ヒント: 条件演算子は、if-else ステートメントの簡略化された形式として理解できます。比較的単純な式を使用する場合、この演算子を使用すると、プログラム コードが簡略化され、プログラムが読みやすくなります。

条件演算子を使用する場合は、次の式などの優先順位の問題にも注意する必要があります。

 x>y ? x-=y : x+=y; 

条件演算子は代入演算子よりも優先されるため、コンパイル時に構文エラーが発生します。上記のステートメントは実際には次のステートメントと同等です。

 (x>y ? x-=y : x)+=y; 

また、演算子「+=」は代入演算子であり、左側のオペランドが変数である必要があるため、エラーが発生します。このようなエラーを避けるために、括弧「0」を使用して区別することができます。たとえば、次のような表現が正しいです。

 (x>y) ? (x-=y): (x+=y); 

例1

プログラム内で 3 つの変数 x、y、z を宣言し、ユーザーはキーボードから x の値を入力し、条件演算子を使用して変数 y と z に値を代入します。実装コードは次のとおりです。

 public class Test9 {
    public static void main(String[] args) {
        int x, y, z; // 3つの変数を宣言する
        System.out.print("数値を入力してください:");
        Scanner input = new Scanner(System.in);
        x = input.nextInt(); // ユーザーがxの値を入力する
        // xが5より大きいかどうかを判断し、それに応じてyに値を代入する
        y = x > 5 ? x : -x;
        // yがxよりも大きいかどうかを判断し、それに応じてzに値を代入する
        z = y > x ? y : 5;
        System.out.printf("x=%d \n", x);
        System.out.printf("y=%d \n", y);
        System.out.printf("z=%d \n", z);
    }
} 

 

このプログラムでは、まず x の値が 58 であると入力し、次に x の値が 5 より大きいかどうかを判断し、明らかに条件が true であれば、y の値は x、つまり y=58 となります。次に、y の値が x より大きいかどうかを判断します。y の値と x の値が両方とも 58 であるため、条件が成立しないため、z=5 になります。 xの値を4として再度入力し、xの値が5より大きいかどうかを判断し、そうでない場合はy=-4とし、そうでない場合はyの値がxより大きいかどうかを判断します。 true の場合、z=5。

 

「 Java 三項演算子 (条件演算子? :)」についてわかりやすく解説!絶対に観るべきベスト2動画

【Java OCA Exam Practice/オラクル 認定試験】Ternary Operator. / 三項演算子。Java practice question / 試験例題での復習動画です。