Operator Ternary Di Jawa

1. Gambaran keseluruhan

Pengendali bersyarat pertigaan : membolehkan kita untuk menentukan ungkapan-ungkapan dalam Java. Ini adalah bentuk ringkas dari pernyataan if-else yang juga mengembalikan nilai.

Dalam tutorial ini, kita akan belajar kapan dan bagaimana menggunakan konstruk terner. Kita akan mulakan dengan melihat sintaksnya diikuti dengan meneroka penggunaannya.

2. Sintaks

Pengendali pertigaan : di Jawa adalah satu-satunya pengendali yang menerima tiga operan :

booleanExpression ? expression1 : expression2

Operan pertama mestilah ungkapan boolean , operan kedua dan ketiga boleh menjadi ungkapan apa pun yang mengembalikan nilai. Konstruk terner mengembalikan ekspresi1 sebagai output jika operan pertama menilai benar , ungkapan2 sebaliknya.

3. Contoh Operator Ternary

Mari pertimbangkan di bawah jika membina -lain :

int num = 8; String msg = ""; if(num > 10) { msg = "Number is greater than 10"; } else { msg = "Number is less than or equal to 10"; }

Dalam kod di atas, kami telah menetapkan nilai untuk msg berdasarkan penilaian bersyarat dari num . Kita boleh menjadikan kod ini lebih mudah dibaca dan selamat dengan mengganti pernyataan if-else dengan konstruk terner:

final String msg = num > 10 ? "Number is greater than 10" : "Number is less than or equal to 10";

4. Penilaian Ekspresi

Semasa menggunakan konstruk turunan Java, hanya satu ungkapan sebelah kanan iaitu ekspresi1 atau ekspresi2 dinilai pada waktu runtime .

Kita boleh mengujinya dengan menulis kes ujian JUnit yang mudah :

@Test public void whenConditionIsTrue_thenOnlyFirstExpressionIsEvaluated() { int exp1 = 0, exp2 = 0; int result = 12 > 10 ? ++exp1 : ++exp2; assertThat(exp1).isEqualTo(1); assertThat(exp2).isEqualTo(0); assertThat(result).isEqualTo(1); }

Ungkapan boolean kami 12> 10 selalu dinilai menjadi benar, jadi nilai exp2 tetap sebagaimana adanya . Begitu juga, mari kita pertimbangkan apa yang berlaku untuk keadaan yang salah :

@Test public void whenConditionIsFalse_thenOnlySecondExpressionIsEvaluated() { int exp1 = 0, exp2 = 0; int result = 8 > 10 ? ++exp1 : ++exp2; assertThat(exp1).isEqualTo(0); assertThat(exp2).isEqualTo(1); assertThat(result).isEqualTo(1); }

Nilai exp1 tetap tidak tersentuh, dan nilai exp2 meningkat oleh 1.

5. Pengendali Nerning Ternary

Ada kemungkinan bagi kita untuk menempatkan operator ternary kita ke sebilangan peringkat pilihan kita. Jadi konstruknya:

String msg = num > 10 ? "Number is greater than 10" : num > 5 ? "Number is greater than 5" : "Number is less than equal to 5";

berlaku di Java. Untuk meningkatkan keterbacaan kod di atas, kita boleh menggunakan pendakap (), jika perlu:

String msg = num > 10 ? "Number is greater than 10" : (num > 5 ? "Number is greater than 5" : "Number is less than equal to 5");

Walau bagaimanapun , harap maklum bahawa tidak digalakkan menggunakan konstruksi terner yang sangat bersarang di dunia nyata. Ini kerana ia menjadikan kod kurang mudah dibaca dan sukar dijaga.

6. Kesimpulannya

Dalam tutorial ringkas ini, kami mengetahui tentang pengendali ternary di Java. Tidak mustahil untuk mengganti setiap konstruksi if-else dengan operator ternary. Walau bagaimanapun, ini adalah alat yang bagus untuk beberapa kes dan menjadikan kod kami jauh lebih pendek dan mudah dibaca.

Seperti biasa, keseluruhan kod sumber tersedia di Github.