naukaJavy.pl

  • Zwiększ rozmiar czcionki
  • Domyślny  rozmiar czcionki
  • Zmniejsz rozmiar czcionki
Home Kurs języka Java

Operatory arytmetyczne

Email Drukuj

Operatory dostępne w języku Java możemy podzielić na cztery grupy. Są to operatory arytmetyczne, logiczne, relacyjne oraz operatory przypisania.

Operatory arytmetyczne to: operator sumy liczb i konkatenacji stringów +, operator różnicy liczb -, operator iloczynu liczb *, operator ilorazu liczb /, operator reszty z dzielenia (modulo) % oraz operatory inkrementacji i dekrementacji, tj. ++ oraz ‑‑. Operatory +, -, *, / oraz % dla operandów liczbowych to odpowiedniki dobrze znanych operacji matematycznych. Operatory ++ i -- to operatory jednoargumentowe. Operator ++ służy do zwiększania o jeden wartości swego operandu a operator -- do analogicznego zmniejszania wartości. Składnia wyrażenia arytmetycznego dla operatorów dwuargumentowych jest następująca:

{operand pierwszy} {operator dwuargumentowy} {operand drugi}

a dla operatorów jednoargumentowych:

{operator jednoargumentowy}{operand}

albo:

{operand}{operator jednoargumentowy}

Jak widać operatorów inkrementacji i dekrementacji możemy używać w wersji prefixowej i postfixowej. Mówimy wtedy odpowiednio o preinkrementacji i postinkrementacji oraz predekrementacji i postdekrementacji.

Różnica między operatorami inkrementacji i dekrementacji w wersji prefixowej i postfixowej jest taka, że wartością wyrażenia dla wersji postfixowej jest wartość z przed wykonania operacji a dla wersji prefixowej wartość po wykonaniu operacji. Przykładowo, jeśli początkowo zmienna x miała wartość 5 to wyrażenie ++x ma wartość 6 a wyrażenia x++ ma wartość 5, mimo że w wyniku obydwu tych operacji wartość zmiennej x została zwiększona o 1. Mówiąc jeszcze inaczej, uruchomienie instrukcji:

int x = 5;

System.out.println(++x);
System.out.println(x);

spowoduje wyświetlenie dwukrotnie liczby 6, natomiast efektem uruchomiania kodu:

int x = 5;

System.out.println(x++);
System.out.println(x);

będzie wyświetlenie liczby 5 a potem liczby 6. Instrukcja System.out.println(++x) powoduje, że w pierwszej kolejności zwiększana jest wartość zmiennej x a dopiero potem wartość ta jest odczytywana i wyświetlana, natomiast instrukcja System.out.println(x++) ma tę semantykę, że wpierw pobierana jest i wyświetlana wartość zmiennej x, a dopiero potem wartość ta jest inkrementowana.

Operator + oprócz tego że jest operatorem sumy liczb jest też operatorem konkatenacji stringów. Operator + jest operatorem konkatenacji, jeśli choć jeden z operandów tego operatora jest stringiem. Operator konkatenacji ma ten sam priorytet co operator sumy, co daje czasem niespodziewane efekty. Przykładowo wykonanie instrukcji:

System.out.println("2 plus 2 to " + 2 + 2);

spowoduje wyświetlenie napisu 2 plus 2 to 22.

Pierwszeństwo jeśli chodzi o kolejność wykonywania działań mają zawsze operatory unarne, a więc ++ i --. Następnie wykonywane są operacje *, / oraz % a operatory + i - wiążą najsłabiej. Poza tym, jeśli kolejność wykonywania działań nie jest w pełni wyznaczona przez pierwszeństwo operatorów to są one wykonywane od lewej do prawej.

W wyrażeniu "2 plus 2 to " + 2 + 2 z powyższego przykładu jako pierwsza wykona się więc operacja konkatenacji "2 plus 2 to " + 2 której wynikiem jest string 2 plus 2 to 2. Następnie wykonana będzie konkatenacja "2 plus 2 to 2" + 2 a więc w rezultacie otrzymamy string 2 plus 2 to 22. Kolejność wykonywania działań możemy oczywiście zmienić, stosując nawiasy. W powyższym przykładzie - aby otrzymać spodziewany wynik - wystarczyłoby ująć w nawiasy podwyrażenie 2 + 2.

 

 

Komentarze  

 
0 2012-10-24 11:09
Co to jest preinkrementacj a, postinkrementac ja, predekrementacj a i postdekrementac ja?
 
 
+12 2012-11-05 17:01
Grzegorz,
Ogólnie inkrementacja to zwiększenie wartości (o 1), a dekrementacja zmniejszenie wartości. Preinkrementacj a to zwiększenie wartości (o 1) przed implementacją, postinkrementac ja to zwiększenie wartości (o 1) po implementacji, predekrementacj a to zmniejszenie wartości (o 1) przed implementacją, a postdekrementac ja to zmniejszenie wartości po implementacji funkcji.
 

Wiadomości

Oracle złożył pozew sądowy przeciwko firmie Google, oskarżając o naruszenie patentów i praw autorskich dotyczących platformy Java.

Kością niezgody jest platforma Google Android a zwłaszcza Wirtualna Maszyna Dalvik, zaimplementowana w oparciu o Wirtualną Maszynę Javy, ale niezgodna ze standardem Java SE czy Java ME.

Reklama

Co to jest

Apache Lucene Java to biblioteka open-source napisana w języku Java. Lucene służy do implementacji mechanizmów wyszukiwania pełnotekstowego – taki mały Google, który możemy mieć we własnej aplikacji.


© Wszelkie prawa zastrzeżone dla Mariusza Lipińskiego

kontakt: mariusz.lipinski@naukajavy.pl | strona domowa: www.mariuszlipinski.pl