Priorytet operatora - 1

"Cześć, Bilaabo!"

„Bilaabo z radością wita swojego przyjaciela!”

„Dzisiaj Bilaabo opowie ci o pierwszeństwie operatorów. Ale najpierw opowie ci o samych operatorach”.

— Co to za operatorzy, o których mówisz?

„Właściwie już je znasz. Po prostu mogłeś nie wiedzieć, że nazywają się operatorami”.

„Załóżmy na przykład, że mamy wyrażenie  c = a + b;

„Ma dwa operatory: operator dodawania i operator przypisania”.

„Innymi słowy, operatory to tylko znaki matematyczne? Jak mnożenie, dzielenie i dodawanie?”

„Tak, to prawda. Istnieją jednak różnice”.

„Nie będę definiował operatorów za ciebie: definicja nie sprawi, że będziesz mądrzejszy. Lepiej zobaczyć ich w akcji. Operatorów można podzielić na kilka grup, które teraz przeanalizujemy”.

1)Operatory matematyczne

Symbol Przykład Nazwa Opis (co robi)
+ a + b Operator dodawania Operator dodawania.
- c - d Operator odejmowania Odejmuje drugą liczbę od pierwszej.
* a * t Operator mnożenia Mnoży dwie liczby.
/ a / b Operator dywizji Dzieli pierwszą liczbę przez drugą.
% c % d Dzieli pierwszą liczbę przez drugą. Oblicza resztę po podzieleniu pierwszej liczby przez drugą.
- -a Jednoargumentowy minus Zmienia znak zmiennej na przeciwny.
Plus do minusa, minus do plusa.
+ +a Jednoargumentowy plus Nic nie zmienia. Zostało to dodane, aby uzupełnić jednoargumentowy operator minus. To tylko dla wyglądu.

„Rozpoznaję te ze szkoły. Moje oprogramowanie zawiera kursy szkolne”.

„Ale o co chodzi z tym znakiem procenta, jakaś magia?”

„To operator „ reszta po dzieleniu ”. Jeśli 11 dzielimy przez 5, to otrzymujemy 2 i resztę 1. To 1 można otrzymać, zapisując 11% 5;”

„Kiedy dzielisz liczby całkowite w Javie, wynikiem jest również liczba całkowita. Reszta z operacji dzielenia jest po prostu ignorowana. Jeśli podzielimy 8 przez 5, otrzymamy 1”.

Wyrażenie Wynik
19 / 10 1 Jeśli podzielimy 19 przez 10, wynik to 1 z resztą 9.
19 % 10 9 Jeśli podzielimy 19 przez 10, wynik to 1 z resztą 9.
2 / 5 0 Jeśli podzielimy 2 przez 5,  wynik to 0 z resztą 2.
16 % 2 0 Jeśli podzielimy 16 przez 2, wynikiem będzie 8 z resztą równą 0.

„Ale po co nam, u licha, pozostała część?”

„Załóżmy, że musisz sprawdzić, czy liczba całkowita jest parzysta. Następnie możesz napisać:”

if (a % 2 == 0)

„A jeśli chcesz sprawdzić, czy b jest nieparzyste, możesz napisać:”

if (b % 2 == 1)

„Lub sprawdzić, czy d jest podzielne przez 3:”

if (d % 3 == 0)

— Interesujące. Zapamiętam to.

2) Operatory porównania

Symbol Przykład Nazwa Opis (co robi)
< a < b Mniej niż Sprawdza, czy a jest mniejsze od b.
<= c <= d Mniejszy lub równy Sprawdza, czy c jest mniejsze lub równe d.
> a > b Lepszy niż Sprawdza, czy a jest większe od b.
>= c >= d Większe bądź równe Sprawdza, czy c jest większe lub równe d.
== i == j równa się Sprawdza, czy i jest równe j.
!= a != 0 Nie równe Sprawdza, czy a nie jest równe zeru.

„Już korzystam z tego wszystkiego”.

„A jaka jest główna różnica między tymi operatorami a operatorami matematycznymi?”

„Jeśli dodamy dwie liczby, otrzymamy liczbę; ale jeśli porównamy dwie liczby, otrzymamy prawdę lub fałsz”.

„Zgadza się. Wynikiem porównania jest wartość „ wartość logiczna ”, która, jak wiadomo, jest reprezentowana przez typ boolowski. Istnieją dwie możliwości: prawda lub fałsz.

„Tak, wszystko jasne. Już to wiem”.

3)Operatory logiczne

Symbol Przykład Nazwa Opis (co robi)
&& a && b I Wynik wyrażenia jest prawdziwy tylko wtedy, gdy zarówno a, jak i b są prawdziwe.
|| c || d LUB Wynikiem wyrażenia jest prawda, jeśli a lub b jest prawdziwe. Obaj lub przynajmniej jeden.
! !a NIE Wynikiem wyrażenia jest prawda tylko wtedy, gdy a jest fałszywe.

„Operatorów logicznych można używać tylko ze zmiennymi lub wyrażeniami boolowskimi”.

Przykład Opis
boolean a = true;
boolean b = true;if (a && b)
Warunek if jest prawdziwy, jeśli obie wartości są prawdziwe
Innymi słowy, jeśli zarówno a, jak i b są prawdziwe, wynikiem jest prawda .
boolean a = true;
boolean b = false;if (a || b)
Warunek if jest prawdziwy, jeśli co najmniej jedna wartość jest prawdziwa.
Innymi słowy, jeśli a lub b jest prawdziwe, wynikiem jest prawda .
boolean b = false;

if (!b)

Warunek if jest prawdziwy, jeśli b nie jest prawdziwe.
Innymi słowy, jeśli   b jest fałszywe , wynik jest  prawdziwy .
int a = 2, b = 3, c = 4;

if (a < b && a < c)
if ((a < b) && (a < c))

Jeśli a jest mniejsze niż b i a jest mniejsze niż c, wynik wyrażenia jest prawdziwy.
a, b i c są liczbami całkowitymi, ale wynikiem porównania liczb całkowitych jest wartość logiczna (prawda, fałsz), co oznacza, że ​​możemy używać operatorów logicznych.

— Już to wszystko wiem.

- Naprawdę? Kontynuujmy więc.

4)Operatory bitowe

Symbol Przykład Nazwa Opis (co robi)
& a & b I Bitowe ORAZ
| c | d LUB Bitowe LUB
~ ~a NIE Bitowo NIE
^ a ^ b XOR Bitowo „WYŁĄCZNIE LUB”

Operatory bitowe wykonują operacje bit po bicie na liczbach całkowitych”.

"Co to jest?"

„Każda liczba jest reprezentowana jako zestaw bitów, a następnie wynik jest obliczany w następujący sposób:”

„Jeśli pierwszy bit obu liczb to 1, to pierwszy bit wyniku będzie równy 1”.

„Jeśli drugi bit obu liczb to 1, to drugi bit wyniku będzie równy 1. I tak dalej”.

„Czy to prawda dla wszystkich operatorów bitowych?”

„To o wiele prostsze. Bit może mieć tylko dwie wartości, 0 i 1, prawda?”

"Prawidłowy."

„W takim razie pomyśl o 1 jako prawdziwej, a 0 jako fałszywej. Operacje na poszczególnych bitach będą wtedy prawie identyczne z operacjami logicznymi”:

Wyrażenie logiczne Wyrażenie bitowe
prawda && prawda == prawda 1&1 == 1
prawda && fałsz == fałsz 1&0 == 0
prawda || prawda == prawda 1|1 == 1
prawda || fałsz == prawda 1|0 == 1
fałsz || fałsz = fałsz 0|0 == 0
!fałsz == prawda ~0 == 1
!prawda == fałsz ~1 == 0

„Och! To takie proste”.

„Tak, tylko nie zapominaj, że operacje bitowe używają odpowiednich bitów z dwóch liczb”.

„Tak, pamiętam: pierwszy bit jednej liczby jest parowany z pierwszym bitem drugiej, a wynik jest również zapisywany na pierwszym bicie. To samo dotyczy pozostałych bitów”.

– Zgadza się. Masz jeszcze jakieś pytania?

„O co chodzi z XOR i„ wyłącznym lub ”?”

„To bułka z masłem: kiedy wartości są różne, to prawda; kiedy są takie same, to fałsz”.

Wyrażenie logiczne Wyrażenie bitowe
prawda XOR prawda == fałsz 1 ^ 1 == 0
fałsz XOR fałsz == fałsz 0 ^ 0 == 0
prawda XOR fałsz == prawda 1 ^ 0 == 1
fałsz XOR prawda == prawda 0 ^ 1 == 1

Oto kilka innych przykładów operacji bitowych:

Przykład Liczby jako bity Wynik jako bity Wynik
5 & 3 0000010 1  i 0000001 1 0000000 1 1
7 & 2 000001 1 1 & 000000 1 0 00000010 2
5 | 9 00000 1 0 1  | 0000 1 00 1 00001101 13
5 ^ 9 00000 101  ^ 00001001 0000 1100 12
~9 ~ 00001001 11110110 246

„Dziękuję, Bilaabo. Teraz już wiem”.

„Jest jeszcze jedna grupa operatorów bitowych, operatorzy przesunięcia:”

5)Operatorzy zmian

Symbol Przykład Nazwa Opis (co robi)
>> a >> b prawe przesunięcie Przesuwa bity liczby a w prawo o b cyfr.
<< c << d przesunięcie w lewo Przesuwa bity liczby c w lewo o d cyfr.
>>> a >>> 2 niepodpisane przesunięcie w prawo Przesuwa bity liczby a w prawo o 2 cyfry.

„Co to za uliczna magia?”

„Właściwie to wszystko jest bardzo proste. Sprawdź to:”

Przykład Liczby jako bity Wynik jako bity Wynik
10 >> 1 0000 101 0 >> 1 00000 101 5
10 >> 2 0000 101 0 >> 2 000000 10 2
10 << 1 0000 101 0 << 1 000 101 00 20
10 << 2 0000 101 0 << 2 00 101 000 40

„Przesunięcie bitów liczby w lewo o 1 to to samo, co pomnożenie liczby przez 2. Przesunięcie o dwie cyfry jest równoważne mnożeniu przez 4, o trzy cyfry — mnożeniu przez 8 i tak dalej”.

„Przesunięcie w prawo odpowiada dzieleniu przez 2, 4, 8, 16 itd.”

„Ale jaka jest różnica między operatorami >>> i >>?”

„Różnią się, gdy pracują z liczbami ujemnymi. Dzieje się tak, ponieważ  liczby ze znakiem używają skrajnego lewego bitu do wskazania znaku. W rezultacie liczba ujemna przestaje być ujemna po przesunięciu w prawo. Wymyślili więc dwa różne operatory. Sprawdź to:"

Wyrażenie Wynik Opis
1 000 1010 >> 1 11 000 101 Liczba ujemna pozostaje ujemna.
W przypadku liczb ujemnych bity przychodzące są wypełniane jedynkami.
1 000 1010 >> 2 111 000 10
1 000 1010 >> 3 1111 000 1
1 000 1010 >>> 1 01 000 101 Liczba ujemna nie jest już liczbą ujemną. W przypadku liczb ujemnych bity przychodzące są wypełniane zerami.
1 000 1010 >>> 2 001 000 10
1 000 1010 >>> 3 0001 000 1

„Przesunięcie nie jest cykliczne. Bity, które wykraczają poza lewą lub prawą krawędź liczby, są po prostu odrzucane”.

6)Operatory przypisania

„Już wiem, co to jest przydział. Ale dlaczego mówisz „operatorzy”?

"Bo jest ich kilka ☺"

Operator Co to znaczy
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;
a &= b; a = a & b;

– Myślę, że rozumiesz logikę.

7) " Operatory inkrementacji i dekrementacji "

Notacja Przykład Opis
++ a++;
++b;
Zwiększa liczbę o 1.
-- d--;
--i;
Zmniejsza liczbę lub zmienną o 1.

„Czy istnieje różnica między umieszczeniem dwóch znaków minus przed lub po zmiennej?”

„Tak, jest, choć niezbyt duża. Jeśli zmienna z jednym z tych operatorów jest częścią wyrażenia lub przypisania, to są różnice. Wolałbym pokazać ci na przykładzie:”

Przykład Co naprawdę się dzieje Opis
int a = 3;
int b = ++a;
int a = 3;
a = a + 1;
int b = a;
a jest najpierw zwiększane o 1, a następnie jest używane w wyrażeniu.
int a = 3;
int b = a++;
int a = 3;
int b = a;
a = a + 1;
a jest najpierw używane w wyrażeniu, a następnie zwiększane o 1.
int a = 3;
return a++;
int a = 3;
int result = a;
a = a + 1;
return result;
Funkcja zwróci 3, ale wartość a zostanie zwiększona o 1.
int x = 5;
x = ++x + ++x;
int x = 5;
int a = x + 1;// The first term is 6
x = a;
int b = x + 1;// The second term is 7
x = b;
x = a + b;
Wynikiem tutaj jest 13. Najpierw x wzrośnie o 1, a ta wartość zastąpi pierwszy wyraz, a następnie x ponownie wzrośnie o 1.

"Wow! To jest fajne!"

„Cieszę się, że ci się podobało. Ale jeśli nie ma wyrażenia ani zadania, nie ma różnic:”

„x++ jest równoważne x = x + 1”.

„++x jest równoważne x = x + 1.”

„Będę o tym pamiętał. Dzięki, Bilaabo”.

8)  „ Operator trójskładnikowy

„Ten operator nie używa tylko jednej lub dwóch zmiennych lub wyrażeń. Używa jednocześnie trzech zmiennych lub wyrażeń:”

Notacja Równoważny kod:
a ? b : c; if (a)
b
else
c
int min = a < b ? a : b; if (a < b)
min = a;
else
min = b;
return a != null ? a.length : 0; if (a != null)
return a.length;
else
return 0;

– Cóż, to bardzo wygodne.

„Tak. I jest kompaktowy, a kod czytelny. Miłego używania!”

9) " Inne "

„Bez względu na to, jak dobrze zorganizowana jest Twoja kolekcja muzyczna, nadal musisz utworzyć folder „Różne”.

„Tak, każdy, kto kiedykolwiek musiał kategoryzować muzykę, całkowicie się z tym zgodzi”.

„Więc jest jeszcze trzech operatorów, o których chcę ci powiedzieć:”

Notacja Przykład Opis
() (a + b) * c Nawiasy zwiększają priorytet operatora.
Rzeczy w nawiasach są wykonywane jako pierwsze.
[] c [i] = c [i + 1]; Pobierz element tablicy według indeksu.
. int n = a.length; Operator kropki ” uzyskuje dostęp do zmiennych i metod obiektu.

„I wreszcie, oto tabela, która podsumowuje pierwszeństwo operatorów:”

Operatorzy Przykłady
Najwyższy priorytet (operatory są wykonywane zgodnie z ich kolejnością w tej tabeli)
()
[]
.
(a + b)
c [i] = c [i] + 1
++
--
~
!
+
-
i++; ++i;
--j; a--;
~c
!f
return +a;
return -a;
*
/
%
a * b
c / d
a % b
+
-
a + b
c - d
String s = "count"+"35";
>>
<<
>>>
a >> 3
b << 2
c >>> 3
<
<=
>
>=
a < b
a <= b
c > b
c >= b
==
!=
a == 3
a != 0
& a & 7
^ a ^ b
| a | b
&& (a < b) && (a < c)
|| (b != 0) || (c != 0)
? : = a > 0 ? a : -a;
=
*=, /=, %=
-=, +=
<<=. >>=, >>>=
&=, ^=. |=
Najniższy priorytet (wykonywane jako ostatnie)