Operatory w Javie
W Javie występują następujące typy operatorów: Arytmetyczne. Inkrementacji/Dekrementacji Przypisania. Porównania. Bitowe. Logiczne. Pozostałe. Operacje wykonywane są na operandach (argumentach operatorów). Przy operacji dodawania: 2 + 5 argumentami operatora dodawania + są dwa operandy 2 i 5.
Operatory arytmetyczne są to operatory w większości dwuargumentowe i służą do wykonywania operacji arytmetycznych dodawania, odejmowania, dzielenia itp. Operator Wykonywane działanie Przykład * mnożenie x * y / dzielenie x / y + dodawanie x + y - odejmowanie x - y % dzielenie modulo (reszta z dzielenia) x % y + Unarny operator plus +x - Unarny operator minus -x
Wynik:
Operator inkrementacji (++) zwiększa wartość zmiennej o jeden, podczas gdy operator dekrementacji (--) zmniejsza wartość zmiennej o jeden. Oba operatory mogą występować w dwóch formach: Przedrostkowej (++x). Przyrostkowej (x++). Obie postacie powodują zwiększenie zapamiętanej w zmiennej wartości o jeden, ale w przypadku formy przedrostkowej odbywa się to przed jej wykorzystaniem (przed zwróceniem jej wartości), a w przypadku formy przyrostkowej dopiero po wykorzystaniu danej zmiennej.
Wynik:
Jeśli w wyniku operacji w dalszej części programu na zmiennej liczbowej przekroczymy dopuszczalny zakres przyjmowanych przez nią wartości to nie spowoduje to błędu kompilacji! Przekroczenie dopuszczalnej wartości nie powoduje błędu a jedynie zawinięcie liczby zgodnie z zasadą: INT_MAX + 1 = INT_MIN INT_MAX + 2 = INT_MIN +1 oraz INT_MIN 1 = INT_MAX INT_MIN 2 = INT_MAX + 1
Operatory bitowe służą do wykonywania operacji na bitach. Są one następujące: Operator Nazwa Przykład & Bitowe AND x & y Bitowe OR x y ~ Bitowe NOT ~x ^ Bitowy XOR x ^ y << Przesunięcie arytmetyczne w lewo x << y >> Przesunięcie arytmetyczne w prawo x >> y >>> Przesunięcie arytmetyczne w prawo z wypełnieniem zerami x >>> y
Operacje logiczne wykonujemy na argumentach, które przyjmują jedną z dwóch możliwych wartości logicznych: true lub false. Wyróżniamy 3 operatory logiczne: Operator Nazwa Przykład && Logiczny AND x && y Logiczny OR x y! Logiczny NOT!x
Operatory przypisania są operatorami dwuargumentowymi i powodują przypisanie operandowi lewostronnemu wartości operandu prawostronnego. Argument 1 Operator Argument 2 Znaczenie x = y x = y x += y x = x + y x -= y x = x y x *= y x = x * y x /= y x = x / y x %= y x = x % y x <<= y x = x << y x >>= y x = x >> y x >>>= y x = x >>>y x &= y x = x & y x = y x = x y x ^= y x = x ^ y
Operatory porównania służą do porównania operandów. Zwracają one wartość true lub false. Przykład: Wynikiem działania arg1 == arg2 będzie true jeśli oba argumenty są sobie równe. W przeciwnym przypadku wynikiem będzie false. Operator Wykonywane działanie Przykład == Równość x == y!= Nierówność x!= y < Mniejszość x < y > Większość x > y <= Mniejszość lub równość x <= y >= Większość lub równość x >= y
Wszystkie operatory dwuargumentowe (za wyjątkiem op. przypisania) o jednakowym priorytecie są sprawdzane od lewej do prawej. Operatory przypisania są oceniane od prawej do lewej. Typ operatora Symbol operatora Przyrostkowe x++ x -- Unarne ++x --x +x -x ~! Multiplikatywne * / % Addytywne + - Przesunięcia bitowe << >> >>> Relacyjne < > <= >= instanceof Równości ==!= Bitowy AND & Bitowy XOR ^ Bitowy OR Logiczny AND && Logiczny OR Warunkowy? : Przypisania = += -= *= /= %= &= ^= == <<= >>= >>>=
1. Zadeklaruj trzy zmienne typu int: x, y, z. Przypisz im dowolne wartości całkowite, po czym wykonaj działanie x % y % z. Wynik tego działania przypisz czwartej zmiennej nazwanej rezultat i wyświetl jej zawartość na ekranie. 2. Spróbuj tak dobrać wartości zmiennych z poprzedniego ćwiczenia by wynikiem nie było zero. 3. Zadeklaruj zmienną typu int o dowolnej nazwie i zainicjuj ją wartością 256. Wykonaj trzy działania(na tej samej zmiennej): Przesunięcie bitowe w prawo o 2 miejsca. Przesunięcie bitowe w lewo o 2 miejsca. Przesunięcie bitowe w prawo o 2 miejsca z wypełnieniem zerami. Wynik wszystkich trzech działań wyświetl na ekranie.
4. Zadeklaruj dwie zmienne typu int. Przypisz im dowolne wartości (z zakresu od 8 do 255) oraz wykonaj na nich działania sumy bitowej i iloczynu bitowego. Wyświetl wyniki działań na ekranie. 5. Przekształć wartości obu zmiennych z poprzedniego ćwiczenia na ich odpowiedniki w kodzie binarnym i wykonaj na nich operacje sumy bitowej i iloczynu bitowego (na kartce). Następnie w środowisku NetBeans wyświetl przeprowadzone na kartce operacje.
6. Zadeklaruj zmienną typu int o dowolnej nazwie i przypisz jej dowolną wartość całkowitą. Dwukrotnie na tej zmiennej wykonaj operację XOR, wykorzystując jako drugi argument dowolną liczbę całkowitą (w obu przypadkach taką samą). Wykorzystaj w tym celu operator przypisania ^=. Zaobserwuj otrzymany wynik i zastanów się dlaczego ma on właśnie taką postać.
7. Jaki będzie wynik działania następującego kodu i dlaczego? 8. Jaki będzie wynik działania poniższego kodu i dlaczego?
9. Jaki będzie wynik działania następującego kodu i dlaczego? 10. Jaki będzie wynik działania poniższego kodu i dlaczego?
Instrukcje warunkowe służą do sprawdzania warunków. W zależności od tego czy warunek jest prawdziwy, czy fałszywy, wykonywane są różne bloki instrukcji. Ogólna postać instrukcji warunkowej jest następująca: if (warunek) { //instrukcje do wykonania, gdy warunek jest prawdziwy } else { //instrukcje do wykonania, gdy warunek jest fałszywy } Blok else jest blokiem opcjonalnym. Prawdziwa jest zatem instrukcja: if (warunek) { //instrukcje do wykonania, gdy warunek jest prawdziwy }
Często przydatna jest również zmodyfikowana postać instrukcji warunkowej, sprawdzająca warunki podrzędne, w przypadku gdy nie jest spełniony warunek nadrzędny. if (warunek1) { //instrukcje do wykonania, gdy warunek1 jest prawdziwy. } else if(warunek2) { //instrukcje do wykonania, gdy warunek2 jest prawdziwy, natomiast warunek1 jest fałszywy. } else if(warunek3) { //instrukcje do wykonania, gdy warunek3 jest prawdziwy, natomiast warunek1 oraz warunek2 jest fałszywy. } else { //instrukcje do wykonania, gdy wszystkie warunki są fałszywe. }
Instrukcja switch pozwala w wygodny sposób sprawdzić ciąg warunków i wykonać różny kod w zależności od tego czy są one fałszywe czy prawdziwe. Jej postać jest następująca:
Operator warunkowy jest postaci: warunek? wartość1 : wartość2; Co należy rozmieć jako: jeśli warunek jest prawdziwy to podstaw za wartość wyrażenia wartość1, w przeciwnym wypadku podstaw za wartość wyrażenia wartość2. Można go traktować jako skróconą wersję instrukcji warunkowej if. Przykład:
11. Zadeklaruj zmienną typu int, oraz zainicjalizuj ją dowolną wartością. Następnie napisz funkcję swtich zawierającą 10 bloków case, sprawdzającą czy zmienna posiada wartość z przedziału [0, 9] i wyświetlający stosowny komunikat np. Zmienna ma wartość 5 ; 12. Zadeklaruj i zainicjalizuj dowolną wartością zmienną typu integer. Ponadto zadeklaruj zmienną o nazwie parzysta typu boolean. Wykorzystując operator warunkowy, napisz program, który sprawdza czy wartość przechowywana we wcześniej zadeklarowanej zmiennej typu integer jest parzysta czy nie, oraz w zależności od prawdziwości (bądź nie) tego warunku, przypisz zmiennej parzysta wartość true (lub false). Wyświetl zawartość zmiennej parzysta na ekranie. Przykład: dla int liczba = 5, zmienna parzysta ma być false.
13. Zapisz następujący kod bez instrukcji break. Zaobserwuj co się stanie. Dlaczego?
14. Zadeklaruj i zainicjalizuj trzy zmienne o nazwach A, B, C, które będą współczynnikami równania kwadratowego zapisanego w formie: Ax 2 + Bx + C = 0 Napisz program rozwiązujący te równanie kwadratowe. Uwaga: Aby obliczyć pierwiastek z delty należy skorzystać z funkcji: Math.sqrt(wyrażenie) wylicza ona pierwiastek kwadratowy z podanego jako argument wyrażenia.
15. Jaki będzie wynik wykonania poniższego kodu i dlaczego?