Bruke Ikke-operatøren i Hvis forhold i Java

1. Introduksjon

I Java's if-else-uttalelser kan vi ta en viss handling når et uttrykk er det ekte, og et alternativ når det er falsk. I denne opplæringen lærer vi om hvordan du kan reversere logikken ved hjelp av ikke operatør.

2. Den hvis ellers Statement

La oss starte med en enkel hvis-annet uttalelse:

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

Hva om programmet vårt bare trenger å håndtere den negative saken? Hvordan vil vi omskrive eksemplet ovenfor?

Et alternativ er å bare fjerne koden i hvis blokkere:

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

Imidlertid en tom hvis blokken ser ut som om den kan være ufullstendig kode, og virker som en langvarig måte å håndtere bare den negative tilstanden på. Vi kan i stedet prøve å teste om det logiske uttrykket vårt evalueres til falsk:

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

Ovennevnte versjon er relativt lett å lese, selv om det kan være vanskeligere å gjøre hvis det logiske uttrykket var mer komplekst. Java har imidlertid et alternativ for oss i form av ikke operatør:

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

3. Den ikke Operatør

De ikke operator er en logisk operator, representert i Java av ! symbol. Det er en unarisk operatør som tar en boolsk verdi som sin operand. De ikke operatøren arbeider ved å invertere (eller negere) verdien av operand.

3.1. Bruke ikke Operatør til en boolsk verdi

Når den brukes til en boolsk verdi, blir ikke operatøren snur ekte til falsk og falsk til ekte.

For eksempel:

System.out.println (! True); // skriver ut falsk System.out.println (! false); // skriver ut ekte System.out.println (!! false); // skriver ut falske

3.2. Bruke ikke Operatør til et boolsk uttrykk

Siden ikke er en unarisk operatør, når du vil ikke resultatet av et uttrykk, må du omgi det uttrykket i parentes for å få riktig svar. Uttrykket i parentes evalueres først og deretter ikke operatøren vender utfallet.

For eksempel:

int-antall = 2; System.out.println (! (Count> 2)); // skriver ut ekte System.out.println (! (count <= 2)); // skriver ut falske
boolsk x = sann; boolsk y = usann; System.out.println (! (X && y)); // skriver ut ekte System.out.println (! (x || y)); // skriver ut falske 

Vi bør merke oss at når De negerer et uttrykk, kommer De Morgans lover inn. Med andre ord blir hvert begrep i uttrykket negert, og operatøren blir reversert. Dette kan hjelpe oss med å forenkle uttrykk som er vanskeligere å lese.

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. Noen vanlige fallgruver

Bruker ikke noen ganger kan operatøren kompromittere lesbarheten til koden vår. Negativer kan være vanskeligere å forstå enn positive. La oss se på noen eksempler.

4.1. Doble negativer

Fordi det ikke operator er en negasjonsoperator, og bruker den med variabler eller funksjoner som har et negativt navn, kan føre til vanskelig å lese kode. Dette ligner på naturlige språk, der dobbeltnegativer ofte blir ansett som vanskelige å forstå.

For eksempel:

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

leser bedre enn

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

Mens API-en vår kanskje ikke gir en er aktiv metode, kan vi lage en for å hjelpe lesbarheten.

4.2. Komplekse forhold

De ikke operatøren kan noen ganger gjøre et allerede komplekst uttrykk enda vanskeligere å lese og forstå. Når dette skjer, kan vi forenkle koden ved å reversere tilstanden eller ved å trekke ut metoder. La oss se på noen eksempler på forhold gjort komplisert av ikke operatør og hvordan vi kan forenkle dem ved å reversere tilstanden:

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. Konklusjon

I denne artikkelen diskuterte vi ikke operatør og hvordan den kan brukes med boolske verdier, uttrykk og i hvis-annet uttalelser.

Vi så også på noen vanlige fallgruver, forårsaket av å skrive uttrykk omvendt og hvordan vi fikser dem.

Som alltid er kildekoden for eksemplene som brukes i denne artikkelen tilgjengelig på GitHub.