V této kapitole se seznámíme s přiřazovacími operátory. Jeden
z nich, operátor =, jsme již poznali.
Další přiřazovací operátory nám umožňují provést s proměnnou
nějakou aritmetickou operaci. Např. operátor
+= přičte k proměnné hodnotu druhého
operandu.
x += 5;
Dalšími přiřazovacími operátory jsou
−=, *=,
/=, %=.
Každý z nich je zápisem příslušné operace s proměnnou na levé
straně. Např. operátor %= provede operaci
modulo:
x %= 6; // stejné jako x = x % 6
Všechny tyto operátory vrací hodnotu, která je výsledkem příslušné
operace. Mají stejnou prioritu a asociují zprava doleva. V příkazu
int y = x += 1;
se tedy nejprve provede operátor +=
a teprve pak =. Operátor
+= vrátí hodnotu
x po přičtení jedničky. Tato hodnota se
použije jako hodnota druhého operandu operátoru
=.
Probrané operátory si můžeme seřadit podle priority
(od nejvyšší k nejnižší):
inkrementace (++),
dekrementace (−−)
přetypování
násobení (*),
dělení (/),
modulo (%)
sčítání (+),
odčítání (−)
přiřazovací operátory (=,
+=, −=,
*=, /=,
%=)
Priorita nám říká, jak silně se operátory váží na operandy.
Např. přetypování má vyšší prioritu než násobení, proto se ve
výrazu (int) d * 2 provede nejprve
přetypování a až potom násobení.
double d = 5.8;
int i = (int) d * 2; // stejné jako ((int) d) * 2
System.out.println( i );
Všechny binární operátory vyhodnocují operandy ve stejném
pořadí: nejprve levý a pak pravý. Toto pořadí je významné,
pokud má vyhodnocení operandů vedlejší efekt.
int x = 0;
int y = x + x++;
Na druhém řádku se nejprve vyhodnotí operátor
+. Jeho levý operand má hodnotu 0, pravý
operand má také hodnotu 0, operátor tedy vrátí 0 a ta se přiřadí do
y. Při vyhodnocování pravého operandu dojde
ke zvýšení proměnné x o 1 (vyhodnocení má
vedlejší efekt). Prohodíme-li pořadí operandů, přiřadí se do
y hodnota 1.
int x = 0;
int y = x++ + x;
Úloha 1
Určete, co se vytiskne.
Úloha 2
Doplňte přiřazovací operátory.
Úloha 3
Podělte reálně x a
y a výsledek uložte do
d.
Úloha 4
Určete, co se vytiskne.
Úloha 5
Doplňte příkazy.
Úloha 6
Napište ve správném pořadí.
Úloha 7
Doplňte křížovku.
Úloha 8
Doplňte věty.
Otázky a odpovědi
Studentka:
Mistře, jaký zápis mám zvolit pro přičtení hodnoty k proměnné?
Mám používat operátor +=
x += 4;
nebo kombinaci operátorů +
a =?
x = x + 4;
Java guru:
Používej operátor +=. Zápis pomocí
tohoto operátoru je kratší a více javovský. Dávej však pozor
na správný zápis. Pokud místo +=
napíšeš omylem =+, bude program
syntakticky správně, protože půjde o kombinaci přiřazení
(=) a unárního plus
(+). Např.
x =+ 2;
přiřadí do x hodnotu 2. Obdobně pro
operátor −=. Např. příkaz
x =- 2;
přiřadí do x hodnotu -2.
Studentka:
Operátory umožňují zapisovat poměrně složité výrazy, např.
z = y += ++x + (x /= 2);
Mám takové výrazy používat? Jsou typické pro opravdové
programátory, mistře?
Java guru:
Nejsou. Uvědom si, že program jednou napíšeš a pak jej budeš
několikrát číst. Proto se snaž psát čitelně a složité výrazy
raději rozděluj na více jednodušších. Čtení i modifikace
programu jsou potom snazší.