Operator Ternary Di Jawa

1. Ikhtisar

Operator kondisional terner :? Memungkinkan kita untuk menentukan ekspresi di Jawa. Ini adalah bentuk padat dari pernyataan if-else yang juga mengembalikan nilai.

Dalam tutorial ini, kita akan belajar kapan dan bagaimana menggunakan konstruksi terner. Kami akan mulai dengan melihat sintaksnya diikuti dengan menjelajahi penggunaannya.

2. Sintaks

Operator ternary :? Di Jawa adalah satu-satunya operator yang menerima tiga operan :

booleanExpression ? expression1 : expression2

Operan pertama harus berupa ekspresi boolean , operan kedua dan ketiga bisa berupa ekspresi apa pun yang mengembalikan beberapa nilai. Konstruksi terner mengembalikan ekspresi1 sebagai keluaran jika operan pertama bernilai true , ekspresi2 sebaliknya.

3. Contoh Operator Ternary

Mari pertimbangkan konstruksi if-else di bawah ini :

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 kode di atas, kami telah menetapkan nilai ke msg berdasarkan evaluasi bersyarat dari num . Kita dapat membuat kode ini lebih mudah dibaca dan aman dengan mengganti pernyataan if-else dengan konstruksi terner:

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

4. Evaluasi Ekspresi

Saat menggunakan konstruksi terner Java, hanya satu dari ekspresi sisi kanan yaitu ekspresi1 atau ekspresi2 dievaluasi saat runtime .

Kita dapat mengujinya dengan menulis kasus uji JUnit sederhana :

@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); }

Kami boolean ekspresi 12> 10 selalu mengevaluasi ke benar, sehingga nilai exp2 tetap sebagai-adalah. Demikian pula, mari pertimbangkan apa yang terjadi untuk kondisi 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 bertambah 1.

5. Operator Ternary Bersarang

Mungkin bagi kami untuk menyarangkan operator terner kami ke sejumlah level pilihan kami. Jadi konstruksinya:

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

valid di Java. Untuk meningkatkan keterbacaan kode di atas, kita dapat menggunakan braces (), dimanapun diperlukan:

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

Namun , harap diperhatikan bahwa tidak disarankan untuk menggunakan konstruksi ternary bersarang dalam di dunia nyata. Ini karena membuat kode kurang dapat dibaca dan sulit dipelihara.

6. Kesimpulan

Dalam tutorial singkat ini, kita belajar tentang operator terner di Java. Tidak mungkin mengganti setiap konstruksi if-else dengan operator terner. Namun, ini adalah alat yang hebat untuk beberapa kasus dan membuat kode kami jauh lebih pendek dan dapat dibaca.

Seperti biasa, seluruh kode sumber tersedia di Github.