Operatory

 

Operatory matematyczne:

  • + dodaje 2 liczby
  • - odejmuje dwie liczby
  • * znak mnożenia
  • / dzielenie całkowite
  • % reszta z dzielenia
      int a = 17;
      int b = 4;
      int c = a+b; //=21
      c = a-b;     //=13
      c = a*b;     //=68
      c = a/b;     //=4 ponieważ 4*4=16 i zostaje reszty 1
      c = a%b;     //=1 reszta z dzielenia

      c = (a+b)/3;  //=7

//Skrótowe operatory:
a += b; //a= a+b
a -= b; //a= a-b
a *= b; //a= a*b
a /= b; //a= a/b
a %= b; //a= a%b

c = a++; //przypisz c=a, a następnie zwiększ wartość a
c = ++a; //zwiększ wartość a, a dopiero wówczas przypisz

c = (a++)+b; //c=a+b, a następnie a = a+1
c = a+b++; //c=a+b, a dopiero później b = b+1;

 

Operatory porównujące i logiczne:

Opertaory te zwracają wartość true lub false.

  • == sprawdza równość
  • != różny
  • >= większy równy
  • <= mniejszy równy
  • > , < większy, mniejszy
  • && - AND - koniunkcja
  • || - OR - alternatywa
int a = 5;
int b = 3;
boolean wynik; 
wynik = a>b; //wynik==true
wynik = a<b;  //wynik==false
wynik = a==b;  //wynik==false
wynik = (a>b)&&(a!=b); //wynik == true, ponieważ (true) AND (true) == true

 

Priorytety operatorów:

Operatory mają różne priorytety. Od priorytetów poszczgólnych operatorów zależy kolejność wykonywania działań.

Operator + ma wyższy priorytet niż operator ==

Dlatego w pokazanym niżej przykładzie najpierw zostanie wykonane dodawanie, a dopiero później porównanie. W efekcie pierwszy wiersz zwróci wartość true.

Operator * ma wyższy priorytet niż +

Dlatego drugi wiersz zwróci wartość 17

10 == 4 + 6
3 * 5 + 2

Aby zmienić kolejność operacji, użyj nawiasów - np. następujący wiersz zwróci wartość 21:

3 * ( 5 + 2 ) 

Niżej pokazano przykład nieprawidłowego i prawidłowego zapisu:

"WARTOŚĆ: " + 2 != 2      // błąd kompilacji
"WARTOŚĆ: " + (2 != 2)    // ten wiersz zwróci łańcuch "WARTOŚĆ: false"

 

Operator trójargumentowy:

  • warunek? wyrażenie1 : wyrażenie2;
int a = 5;
int b = 3;
(a==b)? System.out.print("a jest równe b") : System.out.print("a NIE jest równe b");    //zostanie wyświetlony napis "a Nie jest równe b"

 

Operatory porównujące ciągi znaków lub obiekty:

Nie należy używać operatora == do porównywania typów obiektowych.

W przypadku typów obiektowych operator == porównuje wartości referencji, a nie wartości samych obiektów (patrz sekcja Zmienne i obiekty - stos i sterta (heap vs. stack))

Wyjątkowo operator == działa poprawnie w przypadku łańcuchów znaków (danych typu/klasy String).

UWAGA: metoda equals() działa inaczej dla obiektów klasy String, a inaczej dla obiektów klas innych niż String. Patrz sekcja Metoda equals().