Používanie operátora Not Operator in If v prostredí Java

1. Úvod

V príkazoch if-else Java môžeme vykonať určitú akciu, keď je výraz pravda, a alternatívu, ak existuje nepravdivé. V tomto výučbe sa dozvieme, ako zvrátiť logiku pomocou nie operátor.

2. The keby-inak Spríšery

Začnime jednoduchým keby-inak vyhlásenie:

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

Čo ak náš program musí zvládnuť iba negatívny prípad? Ako by sme napísali vyššie uvedený príklad?

Jednou z možností je jednoduché odstránenie kódu v ak blok:

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

Avšak prázdny ak blok vyzerá, že by to mohol byť neúplný kód, a zdá sa, že je zdĺhavým spôsobom narábania iba s negatívnymi podmienkami. Namiesto toho môžeme vyskúšať testovanie, či sa náš logický výraz vyhodnotí ako nepravdivé:

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

Vyššie uvedená verzia je pomerne ľahko čitateľná, aj keď by bolo ťažšie, keby bol logický výraz zložitejší. Java má pre nás alternatívu v podobe nie operátor:

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

3. The nie Prevádzkovateľ

The nie operátor je logický operátor, reprezentovaný v Jave znakom ! symbol. Je to unárny operátor, ktorý berie ako svoj operand boolovskú hodnotu. The nie operátor pracuje tak, že invertuje (alebo neguje) hodnotu svojho operandu.

3.1. Uplatňovanie nie Operátor na logickú hodnotu

Ak sa použije na boolovskú hodnotu, hodnota nie operátor sa otočí pravda do nepravdivé a nepravdivé do pravda.

Napríklad:

System.out.println (! True); // vypíše false System.out.println (! false); // vypíše true System.out.println (!! false); // vypíše nepravdivé

3.2. Uplatňovanie nie Operátor na Boolovský výraz

Odkedy nie je unárny operátor, ked chces nie výsledok výrazu, musíte tento výraz ohraničiť v zátvorkách aby ste dostali správnu odpoveď. Najskôr sa vyhodnotí výraz v zátvorke a potom znak nie operátor obráti svoj výsledok.

Napríklad:

počet int = 2; System.out.println (! (Počet> 2)); // vypíše skutočný System.out.println (! (počet <= 2)); // vypíše nepravdivé
boolean x = true; boolean y = false; System.out.println (! (X && y)); // vypíše true System.out.println (! (x || y)); // vypíše nepravdivé 

Mali by sme poznamenať, že pri negácii výrazu vstupujú do hry zákony De Morgana. Inými slovami, každý výraz vo výraze je negovaný a operátor je obrátený. To nám môže pomôcť zjednodušiť ťažšie čitateľné výrazy.

Napríklad:

! (x && y) je rovnaké ako! x || ! y! (x || y) je rovnaké ako! x &&! y! (a <3 && b == 10) je rovnaké ako a> = 3 || b! = 10 

4. Niektoré bežné úskalia

Pomocou nie operátor môže niekedy narušiť čitateľnosť nášho kódu. Negatíva môžu byť ťažšie pochopiteľné ako pozitíva. Pozrime sa na niekoľko príkladov.

4.1. Dvojité negatívy

Pretože nie operátor je operátor negácie, ktorý pri použití s ​​premennými alebo funkciami, ktoré majú negatívny názov, môže viesť k ťažko čitateľnému kódu. Je to podobné ako v prirodzených jazykoch, kde sa dvojité negatívy často považujú za ťažko pochopiteľné.

Napríklad:

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

sa číta lepšie ako

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

Aj keď naše API nemusí poskytovať jeAktívny metódou môžeme vytvoriť taký, ktorý uľahčí čitateľnosť.

4.2. Zložité podmienky

The nie operátor môže niekedy sťažiť čítanie a porozumenie už zložitého výrazu. Keď sa to stane, môžeme kód zjednodušiť obrátením podmienky alebo extrahovaním metód. Pozrime sa na niekoľko príkladov podmienok, ktoré nie operátor a ako ich môžeme zjednodušiť obrátením podmienky:

if (! true) // Zložité if (false) // Zjednodušené if (! myDate.onOrAfter (anotherDate)) // Zložité if (myDate.before (anotherDate)) // Zjednodušené if (! (a> = b)) // Komplexné if (a = 10 || celkom> = 1000)) // Komplexné if (počet <10 && celkom <1000) // Zjednodušené

5. Záver

V tomto článku sme diskutovali o nie operátor a ako sa dá použiť s boolovskými hodnotami, výrazmi a v keby-inak Vyhlásenia.

Pozreli sme sa tiež na niektoré bežné úskalia spôsobené písaním výrazov v ich inverznej podobe a tým, ako ich opraviť.

Ako vždy je zdrojový kód príkladov použitých v tomto článku k dispozícii na GitHub.