"Gegroet, Amigo! Ik werd zo meegesleept door het oplossen van logische problemen dat ik niet merkte dat je binnenkwam. Hier is er een voor jou: als krokodillen vliegen, dan is sneeuw wit. Er is een vliegende krokodil. Wat is de conclusie?"

"Eh... Dus we concluderen dat sneeuw wit is?"

"Uitstekend! Je bent geslaagd voor de initiatietest. Je bent klaar om het volgende onderwerp onder de knie te krijgen. Het heet 'logische operatoren'. En we beginnen met Booleaanse logica. Instinctief weet je het al. Je bent tenslotte een robot . We hoeven alleen uw instellingen aan te passen aan de Java-taal."

"Booleaanse logica? Ik heb onlangs gehoord over het booleaanse type..."

"Ja, er is hier een direct verband. Booleaanse uitdrukkingen kunnen alleen waar of onwaar zijn. En toevallig gaat dit soort logica helemaal over uitdrukkingen die waar of onwaar zijn, en combinaties van dergelijke uitdrukkingen. Bijvoorbeeld de uitdrukking 18 < 25 is altijd waar, en 7 < 5 is altijd onwaar. De uitdrukking (i < 10) hangt af van de waarde van i. En als de uitdrukking bijvoorbeeld resulteert in waar, dan kunnen we het programma vragen om iets te doen."

"Ahh, ik snap het. Met Booleaanse uitdrukkingen kunnen we niet alleen logische conclusies trekken, maar ook forks in programma's maken."

"Precies. Het belangrijkste is dat je leert hoe je ze moet schrijven. In Java kun je bijvoorbeeld niet zomaar de uitdrukking gaan schrijven 18 < age <65. Dit zou syntactisch incorrect zijn en het programma zal niet compileren.

"Maar je kunt het zo schrijven:

(18 < age) AND (age < 65)

Natuurlijk gebruiken we het ENGELSE woord niet echt AND. In plaats daarvan hebt u een booleaanse operator nodig . Dat wil zeggen, 'EN' wordt anders weergegeven.

"Er zijn drie logische operatoren in Java: AND(&&), OR(||), NOT(!).

Het goede nieuws is dat u haakjes kunt gebruiken om logische uitdrukkingen van elke complexiteit te construeren.

Het slechte nieuws is dat Java-ontwikkelaars besloten om de notatie uit de C-taal te gebruiken in plaats van de woorden and, oren not.

Kijk naar het scherm:

Logische operator Verwachting Realiteit
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

"Het is eigenlijk niet zo erg... Vrij compact. Ik heb ze bijna uit mijn hoofd geleerd."

"Nou, dat is geweldig. Hier zijn enkele voorbeelden van het gebruik van logische operatoren in Java:

Uitdrukking Interpretatie Uitleg
(0 < a) && (a < 100) (0 < a) and (a < 100) (0 < a) AND (a < 100)
(!a) && (!b) (not a) and (not b) (NOT a) AND (NOT b)
!(!a || !b) not((not a) or (not b)) NOT((NOT a) OR (NOT b))

Voorbeelden van het gebruik van vergelijkingsoperatoren en booleaanse variabelen

"Onthoud, Amigo, waar je een logische uitdrukking kunt schrijven, kun je een logische variabele schrijven."

"Hoe is dat?"

"Ik bedoel, je kunt logische uitdrukkingen op verschillende manieren schrijven. Bijvoorbeeld:

Code Uitleg
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Als de waarde van leeftijd tussen 18en ligt 65, wordt de zin "Je kunt werken" weergegeven.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
We hebben een isYoungvariabele gemaakt en het eerste deel van de uitdrukking erin verplaatst. We hebben het gewoon vervangen age >= 18door age < 18.
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
We hebben een isOld-variabele gemaakt en het tweede deel van de uitdrukking erin verplaatst. Bovendien age <= 65werd vervangen door age > 65.

"Deze drie voorbeelden zijn equivalent. Alleen in het tweede voorbeeld hebben we een deel van de uitdrukking van de ifinstructie verplaatst naar een aparte booleaanse variabele ( isYoung). In het derde voorbeeld hebben we het tweede deel van de uitdrukking naar een tweede variabele verplaatst ( isOld). Trouwens, de standaardwaarde van een booleaanse variabele is false."

'Dat zal ik onthouden. Ik hoop het.'

Logische rekenkunde

"Laten we nu kort de logische bewerkingen doornemen. Ze gehoorzamen aan zeer eenvoudige en logische (hoe kan het ook anders!) regels.

"Laten we eerst eens kijken hoe de ORoperator werkt. Het staat ook bekend als ||of disjunctie .

Uitdrukking Resultaat
true || true true
true || false true
false || true true
false || false false

"Kunt u nu afleiden wat het resultaat van de uitdrukking a || bis op basis van de tabel?"

"Ik zie!" De waarde van een uitdrukking is trueals ten minste één term in de uitdrukking true. Als beide zijn false, dan is het resultaat false.

"Dat klopt. Omdat je zo slim bent, kijk je nog eens naar de tafel en stel je voor dat dat false0 trueis en 1. Als je er zo naar kijkt, doet ||het gedrag van de operator je dan denken aan iets anders dan gewoon rekenen?"

"Eh... Nou, het is een beetje zoals optellen... Maar als je optelt, is 1 + 1 niet gelijk aan 1."

"In zekere zin is het gelijk als we alleen met 0 en 1 werken. Maar doe daar nu geen moeite mee. Het belangrijkste is dat je de overeenkomst tussen de bewerking en ||optelling hebt opgemerkt. Dit betekent dat je gewonnen hebt' Het zal u niet verbazen dat deze bewerking vaak 'logische optelling' wordt genoemd.

"Begrepen."

"Nu komt de AND, ook wel &&, ook wel conjunctie- operator genoemd, het podium op.

Uitdrukking Resultaat
true && true true
true && false false
false && true false
false && false false

"Zoals ik het begrijp, is het resultaat van een uitdrukking truealleen als beide waarden waaruit de uitdrukking bestaat true. Anders is het altijd false."

"Goed gedaan, Amigo! Je zuigt dit allemaal op als een spons. Zie je nog een overeenkomst met rekenen?"

"Vermenigvuldiging!"

"Precies. Dus hier hebben we een 'logische vermenigvuldiging'".

"Vervolgens kijken we naar de NOToperator, ook wel bekend !als de logische inverse .

Uitdrukking Resultaat
!true false
!false true

"Nou, alles is hier vrij eenvoudig. De telefoniste verandert truein falseen vice versa."

"Precies. Hier zijn enkele nuttige uitdrukkingen voor u:"

Uitdrukking Resultaat
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b