Operatory w Java
edytor kodu przykładowy
Operatory arytmetyczne
Java udostępnia wiele operatorów do manipulowania danymi. Na ogólnym poziomie istnieją trzy rodzaje operatorów: jednoargumentowe, dwuargumentowe i trójargumentowe.
Te nazwy określają liczbę operandów wymaganych w poszczególnych operatorach.
Operatory jednoargumentowe wymagają tylko jednego operandu. Przyjrzyj się następującemu wyrażeniu: –5
Zrozumiałe jest, że to wyrażenie reprezentuje wartość „minus pięć”. Ten operator można też zastosować do zmiennej: –number.
Tabela 2.7. Operatory arytmetyczne |
>
Operator | Znaczenie | Typ | Przykład |
+ | Znaczenie | Typ | total = cost + tax |
- | Znaczenie | Typ | cost = total − tax |
* | Znaczenie | Typ | tax= cost * rate |
/ | Znaczenie | Typ | salePrice = original / 2 |
% | Znaczenie | Typ | remainder = value % 3d |
Dzielenie całkowitoliczbowe
Gdy oba operandy operatora dzielenia są liczbami całkowitymi, operator wykonuje dzielenie całkowitoliczbowe. To oznacza, że wynikiem dzielenia także jest liczba całkowita. Reszta jest wtedy pomijana. Przyjrzyj się następującemu kodowi:
double number; number = 5 / 2;
W tym kodzie nie ma znaczenia, że typem zmiennej number jest double; odrzucanie części ułamkowej ma miejsce przed przypisaniem. Aby operacja dzielenia zwracała wartość zmiennoprzecinkową, jeden z operandów musi być typu zmiennoprzecinkowego.
Przykładowo, wcześniejszy kod można zapisać tak:
double number; number = 5.0 / 2;
W tym kodzie wartość 5.0 jest traktowana jak liczba zmiennoprzecinkowa, dlatego operacja dzielenia zwraca liczbę zmiennoprzecinkową. Wynikiem tego dzielenia jest 2.5.
Typ danych boolean
Typ danych boolean umożliwia tworzenie zmiennych, które mogą przyjmować jedną z dwóch wartości: true lub false.
public class Main { public static void main(String[] args) { boolean bool; bool = true; System.out.println(bool); bool = false; System.out.println(bool); } }
true false |
Pierwszeństwo operatorów
Można pisać wyrażenia matematyczne obejmujące wiele operatorów. Poniższa instrukcja przypisuje sumę operandów 17, x, 21 i y do zmiennej answer:
answer = 17 + x + 21 + y;
Jednak niektóre wyrażenia nie są równie proste. Przyjrzyj się następującej instrukcji:
outcome = 12 + 6 / 3;
Jaka wartość zostanie zapisana w zmiennej outcome? Liczba 6 jest tu operandem zarówno operatora dodawania, jak i operatora dzielenia. Do zmiennej outcome może zostać przypisana liczba 6 lub 14; zależy to od momentu dzielenia. Rzeczywisty wynik to 14, ponieważ operator dzielenia ma pierwszeństwo przed operatorem dodawania.
Wyrażenia matematyczne są przetwarzane od lewej do prawej. Gdy dwa operatory dotyczą tego samego operandu, najpierw wykonywany jest operator o najwyższym pierwszeństwie. Mnożenie i dzielenie mają pierwszeństwo względem dodawania i odejmowania, dlatego przedstawiona instrukcja działa w następujący sposób:
1. 6 jest dzielone przez 3, co daje wynik 2.
2. 12 jest dodawane do 2, co daje wynik 14.
Tabela 2.8. Pierwszeństwo operatorów arytmetycznych (od najwyższego do najniższego)
Najwyższe pierwszeństwo – (jednoargumentowa negacja)
* / %
Najniższe pierwszeństwo + –
Operatory mnożenia, dzielenia i modulo mają ten sam poziom pierwszeństwa. Operatory
dodawania i odejmowania też mają to samo pierwszeństwo. Jeśli dwa operatory
powiązane z tym samym operandem mają to samo pierwszeństwo, działają zgodnie
z zasadą łączności. Łączność może być lewostronna (operacje wykonywane od lewej
do prawej) lub prawostronna (operacje wykonywane od prawej do lewej). W tabeli 2.9
wymieniono operatory i ich łączność.
Tabela 2.9. Łączność operatorów arytmetycznych
Operator Łączność
– (jednoargumentowa negacja) Prawostronna
* / % Lewostronna
+ – Lewostronna
Klasa Math
Metoda Math.pow
W Javie podnoszenie liczb do potęgi wymaga użycia metody Math.pow. Oto przykład jej zastosowania:
result = Math.pow(4.0, 2.0);
Metoda Math.sqrt
Metoda Math.sqrt przyjmuje wartość typu double i zwraca pierwiastek kwadratowy tej wartości. Oto przykład ilustrujący, jak używać tej metody:
result = Math.sqrt(9.0);
Złożone operatory przypisania
Złożone operatory przypisania łączą operator przypisania z operatorem arytmetycznym.
Tabela 2.12. Różne instrukcje przypisania (w każdej z nich x = 6)
Instrukcja Działanie instrukcji Wartość x po wykonaniu instrukcji
x = x + 4; Dodaje 4 do x. 10
x = x – 3; Odejmuje 3 od x. 3
x = x * 10; Mnoży x przez 10. 60
x = x / 2; Dzieli x przez 2. 3
x = x % 4; Przypisuje do x resztę z dzielenia x / 4. 2
Tabela 2.13. Złożone operatory przypisania
Operator Przykładowe zastosowanie Odpowiednik instrukcji
+= x += 5; x = x + 5;
–= y –= 2; y = y – 2;
*= z *= 10; z = z * 10;
/= a /= b; a = a / b;
%= c %= 3; c = c % 3;
Jak widać, złożone operatory przypisania sprawiają, że programista nie musi dwukrotnie
wprowadzać nazwy zmiennej. Poniższą instrukcję:
balance = balance + deposit;
Konwersja prostych typów danych na inne takie typy
Oblicz i sprawdź
(5 + 2) * 4 =
10 / (5 – 3) =
8 + 12 * (6 – 2) =
(4 + 17) % (2 – 1) =
(6 – 3) * (2 + 7) / 3 =
Odpowiedzi /kolejnośc przypadkowa/
9 , 28, 46, 5, 0
Oblicz
6 + 3 * 5 _______
12 / 2 – 4 _______
9 + 14 * 2 – 6 _______
5 + 19 % 3 – 1 _______
(6 + 2) * 3 _______
14 / (11 – 4) _______
9 + 12 * (8 – 3) _______
2.23. Czy dzielenie w poniższym kodzie jest całkowitoliczbowe, czy zmiennoprzecinkowe?
Jaka wartość zostanie zapisana w zmiennej portion?
double portion;
portion = 70 / 3;
Operatory
2.24. Napisz z użyciem złożonych operatorów przypisania instrukcje wykonujące następujące operacje: a) dodawanie 6 do x, b) odejmowanie 4 od amount, c) mnożenie y przez 4, d) dzielenie total przez 27, e) zapisywanie w x reszty z dzielenia x przez 7.
Karta pracy
Pytania kontrolne
Podsumowanie
Rozwiązania do ćwiczeń z tej strony