Operatory w Java


Zagadnienia
  • Pojęcie operator
  • Operatory jednoargumentowe
  • Przydatne narzędzia/oprogramowanie

  • Pakiet NetBeans

  • 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 |
    >

    OperatorZnaczenieTypPrzykład
    +ZnaczenieTyptotal = cost + tax
    -ZnaczenieTypcost = total − tax
    *ZnaczenieTyptax= cost * rate
    /ZnaczenieTypsalePrice = original / 2
    %ZnaczenieTypremainder = value % 3d
    + Dodawanie Dwuargumentowy – Odejmowanie Dwuargumentowy * Mnożenie Dwuargumentowy / Dzielenie Dwuargumentowy % Modulo Dwuargumentowy

    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;
          
    Ten kod dzieli 5 przez 2 i przypisuje wynik do zmiennej number. Jaka wartość zostanie zapisana w zmiennej number? Prawdopodobnie zakładasz, że będzie to 2,5, ponieważ taki wynik dzielenia 5 przez 2 wyświetla kalkulator. Jednak skutek wykonania przedstawionego kodu w Javie jest inny. Ponieważ 5 i 2 są liczbami całkowitymi, część ułamkowa wyniku jest pomijana (przycinana). W efekcie do zmiennej number przypisywana jest wartość 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







    Przykładowe rozwiązania oraz komentarze do wybranych ćwiczeń i zadań


  • Rozwiązania do ćwiczeń z tej strony