Korištenje operatora Not Not u if uvjetima na Javi

1. Uvod

U Java-inim if-else izjavama možemo poduzeti određenu radnju kada je izraz pravi, i alternativa kad je lažno. U ovom uputstvu naučit ćemo kako preokrenuti logiku pomoću ne operater.

2. The ako-ne Statement

Počnimo s jednostavnim ako-drugo izjava:

boolean isValid = true; if (isValid) {System.out.println ("Važeće"); } else {System.out.println ("Nevaljano"); }

Što ako naš program treba riješiti samo negativni slučaj? Kako bismo ponovno napisali gornji primjer?

Jedna od mogućnosti je jednostavno uklanjanje koda u ako blok:

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

Međutim, prazno ako blok izgleda kao da je riječ o nepotpunom kodu i čini se dugotrajnim načinom rješavanja samo negativnog stanja. Umjesto toga, mogli bismo pokušati testirati ako naš logički izraz procijeni na lažno:

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

Gornju je verziju relativno lako pročitati, iako bi to moglo biti teže učiniti ako je logički izraz složeniji. Java za nas ima alternativu, u obliku ne operater:

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

3. The ne Operater

The ne operator je logički operator, kojeg na Javi predstavlja ! simbol. Unarni je operator koji za operand uzima logičku vrijednost. The ne operator radi tako što invertira (ili negira) vrijednost svog operanda.

3.1. Primjenom ne Operator za logičku vrijednost

Kada se primijeni na logičku vrijednost, ne okretač operatora pravi do lažno i lažno do pravi.

Na primjer:

System.out.println (! True); // ispisuje lažno System.out.println (! false); // ispisuje true System.out.println (!! false); // ispisuje lažno

3.2. Primjenom ne Operator za logički izraz

Od ne je unarni operator, kad želiš ne ishod izraza, taj izraz morate zaokružiti u zagrade da biste dobili pravi odgovor. Prvo se vrednuje izraz u zagradi, a zatim ne operator invertira svoj ishod.

Na primjer:

brojanje int = 2; System.out.println (! (Brojanje> 2)); // ispisuje true System.out.println (! (count <= 2)); // ispisuje lažno
logička x = točno; logička y = lažno; System.out.println (! (X && y)); // ispisuje true System.out.println (! (x || y)); // ispisuje lažno 

Moramo napomenuti da kada negiranje izraza stupa na snagu De Morganovi zakoni. Drugim riječima, svaki se izraz u izrazu negira, a operator se obrće. To nam može pomoći da pojednostavimo izraze koji se teže čitaju.

Na primjer:

! (x && y) isto je što i! x || ! y! (x || y) isto je što i! x &&! y! (a <3 && b == 10) isto je kao a> = 3 || b! = 10 

4. Neke uobičajene zamke

Koristiti ne operater ponekad može ugroziti čitljivost našeg koda. Negative može biti teže razumjeti nego pozitivne. Pogledajmo neke primjere.

4.1. Dvostruki negativi

Jer ne operator je negacijski operator, koji ga koristi s varijablama ili funkcijama koje imaju negativno ime, može rezultirati teško čitljivim kodom. To je slično prirodnim jezicima, gdje se dvostruke negative često smatra teško razumljivima.

Na primjer:

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

čita bolje od

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

Iako naš API možda ne nudi jeActive metodu, možemo je stvoriti kako bismo olakšali čitljivost.

4.2. Složeni uvjeti

The ne Operator ponekad može učiniti složeni izraz još težim za čitanje i razumijevanje. Kada se to dogodi, možemo pojednostaviti kôd obrnutim uvjetom ili metodama izvlačenja. Pogledajmo neke primjere uvjeta koje je složio ne operatora i kako ih možemo pojednostaviti poništavanjem uvjeta:

if (! true) // Složeno if (false) // Pojednostavljeno if (! myDate.onOrAfter (anotherDate)) // Složeno if (myDate.before (anotherDate)) // Pojednostavljeno if (! (a> = b)) // Složeno ako (a = 10 || ukupno> = 1000)) // Složeno ako (brojati <10 && ukupno <1000) // Pojednostavljeno

5. Zaključak

U ovom smo članku razgovarali o ne operator i kako se može koristiti s logičkim vrijednostima, izrazima i in ako-drugo izjave.

Također smo pogledali neke uobičajene zamke uzrokovane pisanjem izraza u obrnutom obliku i kako ih ispraviti.

Kao i uvijek, izvorni kod za primjere korištene u ovom članku dostupan je na GitHub-u.