Brug af ikke-operatøren i Hvis forhold i Java

1. Introduktion

I Java's if-else-udsagn kan vi tage en bestemt handling, når et udtryk er rigtigtog et alternativ, når det er falsk. I denne vejledning lærer vi om, hvordan du vender logikken ved hjælp af ikke operatør.

2. Den hvis ellers Statement

Lad os starte med en simpel hvis ellers udmelding:

boolsk isValid = sand; hvis (isValid) {System.out.println ("Gyldig"); } andet {System.out.println ("Ugyldig"); }

Hvad hvis vores program kun skal håndtere den negative sag? Hvordan ville vi omskrive ovenstående eksempel?

En mulighed er simpelthen at fjerne koden i hvis blok:

boolsk isValid = sand; hvis (isValid) {} ​​andet {System.out.println ("Ugyldig"); }

Dog en tom hvis blokken ser ud til at være en ufuldstændig kode og virker som en langvarig måde at kun håndtere den negative tilstand på. Vi kan i stedet prøve at teste, om vores logiske udtryk evalueres til falsk:

boolsk isValid = sand; hvis (isValid == false) {System.out.println ("Ugyldig"); }

Ovenstående version er relativt let at læse, selvom det kan være sværere at gøre, hvis det logiske udtryk var mere komplekst. Java har dog et alternativ for os i form af ikke operatør:

boolsk isValid = sand; hvis (! isValid) {System.out.println ("Ugyldig"); }

3. Den ikke Operatør

Det ikke operator er en logisk operator, der er repræsenteret i Java af ! symbol. Det er en unarisk operatør, der tager en boolsk værdi som sin operand. Det ikke operatør arbejder ved at invertere (eller negere) værdien af ​​sin operand.

3.1. Anvendelse af ikke Operatør til en boolsk værdi

Når den anvendes til en boolsk værdi, ikke operatøren drejer rigtigt til falsk og falsk til rigtigt.

For eksempel:

System.out.println (! True); // udskriver falsk System.out.println (! false); // udskriver sandt System.out.println (!! false); // udskriver falsk

3.2. Anvendelse af ikke Operatør til et boolsk udtryk

Siden ikke er en unary operatør, når du vil ikke resultatet af et udtryk, skal du omgive det udtryk i parentes for at få det rigtige svar. Udtrykket i parentesen evalueres først og derefter ikke operatøren inverterer resultatet.

For eksempel:

int-antal = 2; System.out.println (! (Antal> 2)); // udskriver sandt System.out.println (! (count <= 2)); // udskriver falsk
boolsk x = sand; boolsk y = falsk; System.out.println (! (X && y)); // udskriver sandt System.out.println (! (x || y)); // udskriver falsk 

Vi skal bemærke, at når De negerer et udtryk, kommer De Morgans love i spil. Med andre ord negeres hvert udtryk i udtrykket, og operatøren vendes. Dette kan hjælpe os med at forenkle sværere at læse udtryk.

For eksempel:

! (x && y) er det samme som! x || ! y! (x || y) er det samme som! x &&! y! (a <3 && b == 10) er det samme som a> = 3 || b! = 10 

4. Nogle almindelige faldgruber

Bruger ikke operatør kan undertiden kompromittere læsbarheden af ​​vores kode. Negativer kan være sværere at forstå end positive. Lad os se på nogle eksempler.

4.1. Dobbelt negativer

Fordi ikke operator er en negationsoperator, der bruger det med variabler eller funktioner, der har et negativt navn, kan resultere i svær at læse kode. Dette svarer til naturlige sprog, hvor dobbeltnegativer ofte betragtes som svære at forstå.

For eksempel:

hvis (product.isActive ()) {...}

læser bedre end

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

Mens vores API muligvis ikke leverer en er aktiv metode, kan vi oprette en til at lette læsbarheden.

4.2. Komplekse forhold

Det ikke operatøren kan undertiden gøre et allerede komplekst udtryk endnu vanskeligere at læse og forstå. Når dette sker, kan vi forenkle koden ved at vende tilstanden eller ved at udpakke metoder. Lad os se på nogle eksempler på forhold gjort komplekse af ikke operatør, og hvordan vi kan forenkle dem ved at vende betingelsen:

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

5. Konklusion

I denne artikel diskuterede vi ikke operatør og hvordan det kan bruges med boolske værdier, udtryk og i hvis ellers udsagn.

Vi kiggede også på nogle almindelige faldgruber forårsaget af at skrive udtryk i deres omvendte retning og hvordan vi fikser dem.

Som altid er kildekoden til eksemplerne i denne artikel tilgængelig på GitHub.