„Witaj, Amigo! Tak mnie pochłonęło rozwiązywanie problemów logicznych, że nie zauważyłem, jak wszedłeś. Oto jedno dla ciebie: jeśli krokodyle latają, to śnieg jest biały. Jest latający krokodyl. Jaki jest wniosek?”

„Um… Więc dochodzimy do wniosku, że śnieg jest biały?”

„Wspaniale! Zdałeś egzamin wstępny. Jesteś gotowy, aby opanować następny temat. Nazywa się to „operatorami logicznymi”. Zaczniemy od logiki boolowskiej. Instynktownie już to wiesz. W końcu jesteś robotem . Musimy tylko dostosować ustawienia do języka Java”.

„Logika boolowska? Niedawno powiedziano mi o typie boolowskim…”

„Tak, jest tu bezpośredni związek. Wyrażenia boolowskie mogą być tylko prawdziwe lub fałszywe. I tak się składa, że ​​ten rodzaj logiki polega na wyrażeniach, które są prawdziwe lub fałszywe, oraz kombinacjach takich wyrażeń. Na przykład wyrażenie 18 < 25 jest zawsze prawdą, a 7 < 5 jest zawsze fałszem. Wyrażenie (i < 10) zależy od wartości i. A jeśli wyrażenie ma np. wartość prawda, to możemy poprosić program o zrobienie czegoś”.

„Aha, rozumiem. Wyrażenia boolowskie pozwalają nam nie tylko wyciągać logiczne wnioski, ale także tworzyć rozwidlenia w programach”.

„Dokładnie. Najważniejsze jest, aby nauczyć się je pisać. Na przykład w Javie nie można po prostu przejść i napisać wyrażenia 18 < age <65. Byłoby to niepoprawne składniowo i program się nie skompilował.

„Ale możesz napisać to tak:

(18 < age) AND (age < 65)

Oczywiście, tak naprawdę nie używamy angielskiego słowa AND. Zamiast tego potrzebujesz operatora boolowskiego . Oznacza to, że „ORAZ” jest reprezentowane inaczej.

„W Javie są trzy operatory logiczne: AND(&&), OR(||), NOT(!).

Dobrą wiadomością jest to, że możesz używać nawiasów do konstruowania wyrażeń logicznych o dowolnej złożoności.

Zła wiadomość jest taka, że ​​programiści Javy zdecydowali się na użycie notacji z języka C zamiast słów and, ori not.

Spójrz na ekran:

Operator logiczny Oczekiwanie Rzeczywistość
AND (∧) and &&
OR (∨) or ||
NOT (¬) not !

„Właściwie nie jest tak źle… Całkiem zwarty. Prawie nauczyłem się ich na pamięć”.

„Cóż, to cudowne. Oto kilka przykładów użycia operatorów logicznych w Javie:

Wyrażenie Interpretacja Wyjaśnienie
(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))

Przykłady użycia operatorów porównania i zmiennych boolowskich

„Pamiętaj, Amigo, gdziekolwiek możesz napisać wyrażenie logiczne, możesz napisać zmienną logiczną”.

"Jak to?"

„Chodzi mi o to, że możesz pisać wyrażenia logiczne na różne sposoby. Na przykład:

Kod Wyjaśnienie
int age = 35;
if (age >= 18 && age <= 65)
   System.out.println("You can work");
Jeśli wartość wieku mieści się w przedziale od 18i 65, wówczas wyświetlana jest fraza „Możesz pracować”.
int age = 35;
boolean isYoung = (age < 18);
if (!isYoung && age <= 65)
   System.out.println("You can work");
Stworzyliśmy isYoungzmienną i przenieśliśmy do niej pierwszą część wyrażenia. Po prostu zastąpiliśmy age >= 18.age < 18
int age = 35;
boolean isYoung = (age < 18);
boolean isOld = (age > 65);
if (!isYoung && !isOld)
   System.out.println("You can work");
Stworzyliśmy zmienną isOld i przenieśliśmy do niej drugą część wyrażenia. Dodatkowo age <= 65został zastąpiony przez age > 65.

„Te trzy przykłady są równoważne. Dopiero w drugim przykładzie przenieśliśmy część wyrażenia z instrukcji ifdo oddzielnej zmiennej boolowskiej ( isYoung). W trzecim przykładzie przenieśliśmy drugą część wyrażenia do drugiej zmiennej ( isOld). Nawiasem mówiąc, domyślną wartością zmiennej boolowskiej jest false”.

- Zapamiętam to. Mam nadzieję.

Arytmetyka logiczna

„Przejdźmy teraz pokrótce przez operacje logiczne. Podlegają one bardzo prostym i logicznym (jakże inaczej!) regułom.

„Najpierw zobaczmy, jak ORdziała operator. Znany jest również jako dysjunkcja|| lub .

Wyrażenie Wynik
true || true true
true || false true
false || true true
false || false false

„Czy możesz teraz wydedukować, jaki wynik wyrażenia a || bjest oparty na tabeli?”

"Widzę!" Wartość wyrażenia jest truewtedy, gdy co najmniej jeden termin w wyrażeniu to true. Jeśli oba są false, to wynikiem jest false.

„Zgadza się. Skoro jesteś taki bystry, spójrz jeszcze raz na tabelę i wyobraź sobie, że falsejest 0 i true1. Kiedy tak na to patrzysz, czy ||zachowanie operatora przypomina ci coś ze zwykłej arytmetyki?”

„Um… Cóż, to trochę jak dodawanie… Ale kiedy robisz dodawanie, 1 + 1 nie równa się 1”.

„W pewnym sensie jest to równe, jeśli pracujemy tylko z 0 i 1. Ale nie przejmuj się tym teraz. Ważne jest to, że zauważyłeś podobieństwo między operacją a ||dodawaniem. Oznacza to, że nie będziesz” Nie zdziw się, że operacja ta jest często nazywana „dodawaniem logicznym”.

"Rozumiem."

„Teraz ANDna scenę wkracza operator &&koniunkcji .

Wyrażenie Wynik
true && true true
true && false false
false && true false
false && false false

„Jak rozumiem, wynikiem wyrażenia jest truetylko wtedy, gdy obie wartości tworzące wyrażenie to true. W przeciwnym razie jest to zawsze false”.

„Dobra robota, Amigo! Chłoniesz to wszystko jak gąbka. Czy widzisz inne podobieństwo do arytmetyki?”

"Mnożenie!"

„Dokładnie. Mamy więc„ logiczne mnożenie ””.

„Następnie przyjrzymy się operatorowi NOT, czyli !odwrotności logicznej .

Wyrażenie Wynik
!true false
!false true

„Cóż, tutaj wszystko jest dość proste. Operator zmienia się truena falsei odwrotnie”.

„Dokładnie. Oto kilka przydatnych wyrażeń:”

Wyrażenie Wynik
m && !m false
m || !m true
!(a && b) !a || !b
!(a || b) !a && !b