Słowo "boolean" w kontekście języka Java może być używane w różnych, choć bardzo powiązanych, znaczeniach. Może to być:
Zauważ, że w Javie operatory &, | i ^ mają zastosowanie również do liczb całkowitych. W tym przypadku działają one nieco inaczej i są nazywane logicznymi operatorami bitowymi (lub binarnymi).
Przejdźmy do przykładów i wyświetlmy kilka wyrażeń logicznych skomponowanych za pomocą operatorów logicznych.
- Typ prosty boolean lub zmienna boolean tego typu
- Klasa Java Boolean lub obiekt osłonowy Boolean
- Wyrażenie boolowskie, wartość logiczna, jakiś warunek
- Operatory boolowskie w Javie
Czym jest boolean (wartość logiczna) w sensie ogólnym
Koncepcja wyrażenia boolowskiego pochodzi z matematyki a dokładniej z logiki matematycznej. Wyrażenie boolowskie w rachunku zdań to wyrażenie, o którym można powiedzieć, że jest prawdziwe lub fałszywe. Na przykład:"Śnieg jest biały"
"Krokodyle potrafią latać"
"2 + 2 = 4"<
"1 + 1 = 21"
Jednocześnie "2" i "śnieg" nie są wyrażeniami boolowskimi.
Typ prosty boolean w Javie i zmienne typu boolean
Kiedy mówimy o boolean w Javie, najczęściej chodzi o typ prosty boolean i zmienne typu boolean. Jak zapewne się domyślasz, zmienne tego typu mogą przyjmować dwie wartości, true lub false. Java ma dość rygorystyczne ograniczenia: boolean nie może być przekonwertowany na żaden inny typ danych i na odwrót. W szczególności boolean w Javie nie jest typem całkowitym i nie można używać wartości integer zamiast wartości logicznych boolean. Oto przykłady bezpośredniego ustawienia typu boolean:
boolean myBoolean; //boolean variable
myBoolean = false;
boolean myBoolean1 = true; //another boolean variable
Mamy tu dwie zmienne typu boolean.
Napiszmy mały program z przykładem użycia typu boolean:
//boolean variable example
public class BoolTest {
public static void main(String[] args) {
boolean myBoolean = false;
System.out.println(myBoolean);
}
}
Ten program wyświetla w konsoli "false". Nawiasem mówiąc, zmienna typu boolean jest domyślnie ustawiana na false, ale Java nie pozwala na pracę z niezainicjowanymi zmiennymi lokalnymi.
Wyrażenia boolowskie w Javie
Oprócz jawnego inicjowania zmiennej boolean jako true lub false, w wielu miejscach używamy typu boolean niejawnie. Tak jak wynikiem każdego dodawania liczb będzie liczba, tak wynik każdego porównania przyjmuje wartość true lub false, czyli jest typu boolean. Oznacza to, że oprócz bezpośredniego określenia wartości logicznej za pomocą instrukcji przypisania zmiennej wartości typu boolean, wartości logiczne (boolowskie) wynikają z różnych porównań, takich jak 5 > 2 i są używane głównie w instrukcjach warunkowych i pętlach. Oto przykład takiego użycia typu boolean:
public class BoolTest {
public static void main(String[] args) {
boolean myBoolean = false;
int a = 5;
int b = 7;
System.out.println(a < b);
System.out.println(0 > 7);
System.out.println(myBoolean == false);
}
}
Wyświetlone zostanie:
true
false
true
W przypadku a < b, operator < porównuje wyrażenie po lewej stronie z wyrażeniem po prawej stronie. Wynik porównania został wyświetlony na ekranie.
Ponieważ 5 < 7 (stwierdzenie jest prawdziwe), w konsoli wyświetlona zostanie wartość true.
W drugim przypadku wyświetlamy wynik bezpośredniego porównania wartości zero i siedem, a w trzecim pytamy, czy zmienna myBoolean ma wartość false. Ponieważ tak jest, wyświetlana jest wartość true.
W rzeczywistości do budowania wyrażeń boolowskich w Javie możemy użyć dowolnych operatorów porównania:operatory porównania | Operator Java | Przykład operacji | Wynik operacji |
---|---|---|---|
Mniejsze | < | a < b | true jeżeli a jest mniejsze od b, w przeciwnym wypadku false |
Większe | > | a > b | true jeżeli a jest większe od b, w przeciwnym wypadku false |
Mniejsze lub równe | <= | a <= b | true jeżeli a jest mniejsze od b lub ich wartości są równe, w przeciwnym wypadku false |
Większe lub równe | >= | a >= b | true jeżeli a jest większe od b lub ich wartości są równe, w przeciwnym wypadku false |
Równe | == | a == b | true jeżeli a jest równe b, w przeciwnym wypadku false |
Różne | != | a != b | true jeżeli a jest różne b, w przeciwnym wypadku false |
Gdzie używane są wartości logiczne (boolean)
Wartości logiczne i wyrażenia warunkowe są bardzo często używane w warunkach instrukcji rozgałęzień, operatorach trójargumentowych i pętlach. W rzeczywistości ich działanie opiera się na sprawdzaniu pewnych wyrażeń boolowskich. Na przykład:
public class BoolTest2 {
public static void main(String[] args) {
int i = 0;
while (i <= 10)
{
System.out.println(i);
i++;
}
}
}
Ten program wypisuje ciąg liczb całkowitych, zwiększając wartość o jeden tak długo, jak warunek w nawiasach po while jest spełniony. Czyli dopóki wyrażenie i <=10 ma wartość true.
Operatory boolowskie w Javie Budowanie wyrażeń logicznych za pomocą operatorów boolowskich
W Javie dostępne są następujące operacje logiczne (lub boolowskie):Logiczna negacja, to również NOT lub inwersja. W Javie oznaczana symbolem ! przed wyrażeniem.
Iloczyn logiczny, to również AND lub koniunkcja. Oznaczany symbolem & między dwoma wyrażeniami, do których jest stosowany.
Suma logiczna w Javie, to również OR lub alternatywa. W Javie oznaczana symbolem | między dwoma wyrażeniami.
Alternatywa rozłączna, XOR, alternatywa wykluczająca. W Javie oznaczana symbolem ^ między dwoma wyrażeniami.
W Javie operatory logiczne obejmują również warunkowe LUB, oznaczane jako ||, a także warunkowe ORAZ, &&.
a | b == true
Operator boolowski w Javie | Nazwa | Typ | Opis | Przykład |
---|---|---|---|---|
! | Logiczne "nie" (negacja) | jednoargumentowy | !x oznacza "nie x". Zwraca true jeśli x ma wartość false. Zwraca false jeśli x ma wartość true. |
wtedy
|
& | Logiczne "i" (oraz, iloczyn logiczny) | dwuargumentowy | (a & b) zwraca true jeżeli zarówno a jak i b mają wartość true. |
wtedy
|
| | Logiczne LUB (suma logiczna) | dwuargumentowy | (a | b) zwraca true jeśli a lub b lub oba operandy mają wartość true. |
wtedy |
^ | Alternatywa rozłączna OR (XOR) | dwuargumentowy | (a ^ b) zwraca true, jeżeli tylko jeden z operandów (a lub b) ma wartość true. Zwraca false, jeżeli a i b mają jednocześnie wartość true lub false. W rzeczywistości, jeśli a jest różne od b zwracana jest wartość true. |
wtedy
|
&& | Warunkowe AND (skrócone logiczne ORAZ) | dwuargumentowy | a && b to to samo co a & b, ale jeśli a ma wartość false, operator zwraca false bez sprawdzania b. | |
|| | Warunkowe OR (skrócone logiczne LUB) | dwuargumentowy | a || b to to samo co a | b, ale jeśli a ma wartość true, operator zwraca true bez sprawdzania b. |
public class BoolTest2 {
public static void main(String[] args) {
int a = 5;
int b = 7;
boolean myBool1 = true;
boolean myBool2 = false;
System.out.println(myBool1&myBool2);
System.out.println(myBool1|myBool2);
System.out.println(!myBool1);
System.out.println((a > b) & !myBool1 | myBool2);
}
}
Oto wynik:
false
true
false
false
W rzeczywistości za pomocą operatorów logicznych można tworzyć bardzo złożone konstrukcje logiczne, na przykład
(a<!b)&(q+1 == 12)^(!a | c & b > 1 + b)|(q ^ a > !b)
Jeżeli wszystkie zmienne zostały zainicjowane, takie konstrukcje będą działać. Jednak nie należy ich nadużywać, ponieważ zmniejszają czytelność kodu.
Niemniej jednak bardzo przydatna jest umiejętność radzenia sobie z takimi konstrukcjami logicznymi. Spróbuj tworzyć wyrażenia logiczne z innymi operatorami podanymi w tabeli
Kolejność wykonywania działań logicznych
Podobnie jak w matematyce, w programowaniu operatory mają określoną kolejność wykonywania, jeżeli występują w tym samym wyrażeniu. Operatory jednoargumentowe mają pierwszeństwo przed dwuargumentowymi, a iloczyn (nawet logiczny) przed sumą. Oto operatory logiczne w kolejności ich wykonywania, umieszczone wyżej mają wyższy priorytet:!
&
^
|
&&
||
Typ osłonowy Boolean w Javie
W Javie każdy typ prosty ma "brata", klasę osłonową (opakowującą). Klasa opakowująca to specjalna klasa, która przechowuje wewnątrz wartość typu prostego. Jednak jest to klasa, dlatego możesz tworzyć jej instancje (obiekty). Obiekty te przechowują potrzebne wartości typów prostych, będąc jednocześnie prawdziwymi obiektami. Typ prosty boolean w Javie ma klasę osłonową Boolean (przez duże B). Obiekty klasy Boolean tworzy się tak jak wszystkie inne:
Boolean b = new Boolean(false);
Klasa Boolean w Javie posiada przydatne metody. Jedną z najciekawszych jest metoda parseBoolean.
Metoda static boolean parseBoolean(String s) parsuje string z argumentu jako boolean. Zwracany boolean ma wartość true, jeśli argument string jest niepusty i bez rozróżniania wielkości liter jest równy ciągowi tekstowemu "true". W przeciwnym razie zwraca false.
Przykład metody parseBoolean
public class BoolTest2 {
public static void main(String[] args)
{
System.out.println(Boolean.parseBoolean("True"));
System.out.println(Boolean.parseBoolean("TRuE"));
System.out.println(Boolean.parseBoolean("False"));
System.out.println(Boolean.parseBoolean("here"));
}
}
Wyświetlone zostanie:
true
true
false
false
GO TO FULL VERSION