Menggunakan Not Operator dalam Keadaan Jika di Java

1. Pengenalan

Dalam pernyataan if-else Java, kita dapat mengambil tindakan tertentu ketika ungkapan itu benar , dan alternatif jika salah . Dalam tutorial ini, kita akan belajar mengenai cara membalikkan logik menggunakan operator bukan .

2. if-lain S enyata

Mari mulakan dengan pernyataan if-else yang mudah :

boolean isValid = true; if (isValid) { System.out.println("Valid"); } else { System.out.println("Invalid"); }

Bagaimana jika program kita hanya perlu menangani kes negatif? Bagaimana kita menulis semula contoh di atas?

Salah satu pilihan adalah dengan membuang kod di blok if :

boolean isValid = true; if (isValid) { } else { System.out.println("Invalid"); }

Walau bagaimanapun, blok kosong jika kelihatan seperti kod yang tidak lengkap, dan nampaknya cara lama menangani hanya keadaan negatif. Sebaliknya, kami mungkin mencuba jika ungkapan logik kami dinilai salah :

boolean isValid = true; if (isValid == false) { System.out.println("Invalid"); }

Versi di atas agak mudah dibaca, walaupun mungkin lebih sukar untuk dilakukan jika ungkapan logik lebih kompleks. Java mempunyai alternatif untuk kita, dalam bentuk bukan operator:

boolean isValid = true; if (!isValid) { System.out.println("Invalid"); }

3. Bukan Operator

Yang tidak pengendali merupakan pengendali logik, yang diwakili di Jawa oleh ! simbol. Ini adalah pengendali yang tidak berubah yang mengambil nilai boolean sebagai operandnya. Yang tidak operator berfungsi dengan menyongsang (atau menidakkan) nilai operan itu .

3.1. Menerapkan Operator Bukan untuk Nilai Boolean

Apabila digunakan untuk nilai boolean, yang tidak operator ternyata benar untuk palsu dan palsu untuk benar .

Sebagai contoh:

System.out.println(!true); // prints false System.out.println(!false); // prints true System.out.println(!!false); // prints false

3.2. Memohon Operator Bukan untuk Ekspresi Boolean

Sejak tidak merupakan pengendali unari, apabila anda mahu tidak hasil ungkapan, anda perlu mengelilingi ungkapan itu dalam kurungan untuk mendapatkan jawapan yang betul. Ungkapan dalam kurungan dinilai terlebih dahulu dan kemudian operator bukan membalikkan hasilnya.

Sebagai contoh:

int count = 2; System.out.println(!(count > 2)); // prints true System.out.println(!(count <= 2)); // prints false
boolean x = true; boolean y = false; System.out.println(!(x && y)); // prints true System.out.println(!(x || y)); // prints false 

Kita harus perhatikan bahawa ketika meniadakan ekspresi, undang-undang De Morgan mulai berlaku. Dengan kata lain, setiap istilah dalam ungkapan ditolak dan operator dibalikkan. Ini dapat membantu kita mempermudah ungkapan yang sukar dibaca.

Sebagai contoh:

!(x && y) is same as !x || !y !(x || y) is same as !x && !y !(a <3 && b == 10) is same as a>= 3 || b != 10 

4. Beberapa Kesalahan Umum

Menggunakan operator not kadangkala boleh menjejaskan kebolehbacaan kod kami. Negatif lebih sukar difahami daripada positif. Mari lihat beberapa contoh.

4.1. Negatif Berganda

Kerana operator not adalah operator negasi, menggunakannya dengan pemboleh ubah atau fungsi yang memiliki nama negatif, dapat menghasilkan kod yang sukar dibaca. Ini serupa dengan bahasa semula jadi, di mana negatif ganda sering dianggap sukar difahami.

Sebagai contoh:

if (product.isActive()) {...}

membaca lebih baik daripada

if (!product.isNotActive()) {...}

Walaupun API kami mungkin tidak menyediakan kaedah isActive , kami dapat membuatnya untuk membantu pembacaan.

4.2. Keadaan Kompleks

Yang tidak operator kadang-kadang boleh membuat ungkapan sudah kompleks lebih sukar untuk dibaca dan difahami. Apabila ini berlaku, kita dapat mempermudah kod dengan membalikkan keadaan atau dengan mengekstrak kaedah. Mari kita lihat beberapa contoh keadaan yang dibuat rumit oleh operator bukan dan bagaimana kita dapat mempermudahnya dengan membalikkan keadaan:

if (!true) // Complex if (false) // Simplified if (!myDate.onOrAfter(anotherDate)) // Complex if (myDate.before(anotherDate)) // Simplified if (!(a >= b)) // Complex if (a = 10 || total >= 1000)) // Complex if (count < 10 && total < 1000) // Simplified

5. Kesimpulan

Dalam artikel ini, kami membincangkan operator bukan dan bagaimana ia boleh digunakan dengan nilai boolean, ungkapan dan dalam pernyataan if-else .

Kami juga melihat beberapa perangkap biasa, yang disebabkan oleh menulis ungkapan dalam kebalikannya dan bagaimana memperbaikinya.

Seperti biasa kod sumber untuk contoh yang digunakan dalam artikel ini terdapat di GitHub.