12. JAVA – Proměnné a řídicí příkazy
Proměnné
Proměnné se deklarují pomocí příkazu ve tvaru
typ
název_proměnné;
Proměnnou se inicializují pomocí příkazu ve tvaru
typ prom =
hodnota;
Primitivní datové typy
Primitivní datové typy nejsou objekty ve smyslu objektového programování, ale spíše normální binární hodnoty.
- Boolean - Reprezentuje hodnoty true/false
- Char - Znak
- Byte - 8bitové celé číslo
- Short - Krátké celé číslo
- Int - Celé číslo
- Long - Dlouhé celé číslo
- Float - Číslo s plovoucí desetinou čárkou s jednoduchou přesností
- Double - Číslo s plovoucí desetinou čárkou s dvojitou přesností
Typ | Velikost v bitech | Rozsah |
---|---|---|
Byte | 8 | -128 až 127 |
Short | 16 | -32 768 až 32 767 |
Int | 32 | -2 147 483 648 až 2 147 483 647 |
Long | 64 | -9 223 372 036 854 775 808 až 9 223 372 036 854 775 807 |
Referenční datové typy
Referenční datové typy jsou objekty a pole. Hodnota referenční proměnné je odkaz (reference) do paměti na místo, kde je objekt (nebo pole) uložen. V jiných programovacích jazycích se používá pro tento účel pointerů (ukazatelů do paměti), v Javě se přímo s pamětí nepracuje, místo pointerů se používají referenční proměnné.
Jelikož referenční proměnná obsahuje pouze odkaz na objekt, nikoli objekt samotný, přiřazením její hodnoty jiné proměnné se přiřadí opět pouze reference na původní objekt, nikoli jeho samotná data tak, jak to bylo u primitivních datových typů. Porovnejte přiřazení v následujícím příkladu (pokud nerozumíte syntaxi v druhé polovině příkladu, nelekejte se, k objektům se dostaneme v dalších dílech).
Možnost přetypování
U přetypování musím převádět na odpovídající typy, nebo může dojít ke ztrátě informací. Například pokud použiju přetypování z double nebo long na int.
double x,
y;
(int) (x /
y);
Aritmetické operátory
+ | Sčítání |
- | Odečítání |
* | Násobení |
/ | Dělení |
% | Modulo (zbytek po dělení) |
++ | Inkrementace (zvýší o 1) |
-- | Dekrementace (sníží o 1) |
Relační operátory
== | Rovná se |
!= | Nerovná se |
> | Větší než |
< | Menší než |
>= | Větší nebo rovno |
<= | Menší nebo rovno |
Logické operátory
& | AND |
| | OR |
^ | XOR (výhradní OR) |
|| | Zkratové OR |
&& | Zkratové AND |
! | NOT |
Logické operátory lze použít například následovně:
if (b1 |
b2)
// Příkaz...
(Pokud je b1 true nebo b2, tak se podmínka splní)
Zkratové operátory se používají například následovně:
if (a ==
1 &&
b == 2
|| b >
3)
// Příkaz...
Přiřazení
Operátor přiřazení se zapisuje pomocí:
Proměnná = výraz;
Typ proměně musí být kompatibilní s typem, který nabývá výraz.
Nemůžu tak dát například text do intu.
Zároveň operátor umožňuje řetězit:
Prom1 = Prom2 = Prom3 = 7;
Zkrácené přiřazení
Jazyk Java umožňuje používat operátory zkráceného přiřazení,
které zjednoduší psaní kódu.
Přiřazení:
x = x +
10;
Zkrácené přiřazení:
x += 10;
Všechny operátory zkráceného přiřazení:
+= | -= | *= | /= |
%= | &= | |= | ^= |
Příkazy if
if (podmínka)
{
Příkaz...
(pokud je podmínka pravdivá provede se cíl příkazu)
} else {
(else není povinný)
Příkaz...
(pokud podmínka není pravdivá provede se příkaz, je li
else uveden)
}
Vnořený if
Vnořený if je příkaz if, který je obsažen v jiném příkazu if. V programování jsou vnořené if velmi časté a je nutné pamatovat, že else odkazuje vždy na nejbližší příkaz if.
Else
Else funguje jak je již zmíněno nahoře. Dává se za if a provede se ve chvíli, kdy není podmínka splněna. Další možností je else if, který funguje jako else, ale má v sobě další parametry jako má if.
Switch
Příkaz switch poskytuje vícenásobné větvení. To znmená, že umožňuje programu volit si mezi různými možnostmi. Lze sestavit i z příkaz if, ale použití switch je efektivnější.
Funguje tak, že switch dostane určitou hodnotu a hledá shodu. Jakmile je shoda nalezena, provede příkaz uvnitř.
Switch lze udělat také vnořený (case bude obsahovat další switch).
switch (výraz)
{
case
moznost1:
Příkaz...
(Většinou se dává na konec break, aby ukončil cyklus)
case
moznost2:
Příkaz...
default:
(Default je základní hodnota, provede se tak, pokud se
žádná možnost neshoduje s hodnotou)
Příkaz...
}
Cykly for
Obsahuje řídící proměnnou, která se při běhu mění. Cyklus má pevný počet opakování (počítá se díky již zmíněné řídící proměnné). Pro příklad se přičítá (i++) a dokud nedosáhne určité hodnoty, se kterou již nesplní podmínku (i < 5) tak se cyklus opakuje.
for (
inicializace;
podmínka;
interakce) {
Příkaz...
}
For-each
Cyklus for-each slouží k tomu, když je potřeba prozkoumat každý prvek pole od začátku do konce.
Příklad:
int cisla[] =
{ 1, 2, 3, 4, 5 };
int soucet =
0;
for(int
i: cisla)
soucet += i;
While
Příkaz while se opakuje do doby, dokud není splněna podmínka
while (
podmínka
) {
Příkaz...
(V příkazu upravuje podmínku)
}
Do-while
Oproti cyklům for a while, kde se testuje podmínka na začátku cyklu, tak ji cyklus do while kontroluje až na konci. Příkaz je tak tedy spuštěn minimálně jednou.
do {
Příkaz...
} while (podmínka);
Vnořené cykly
Vnořený cyklus je cyklus, který je obsažen v jiném cyklu. Vnořené cykly umožňují řešit nejrůznější programátorské problémy (například neexistující přítelkyně) a jsou klíčovou součástí programování.
Break
Příkazem break lze vynutit okamžité ukončení cyklu. Program přitom přeskočí veškerý zbývající kód v těle cyklu a pokračuje dalším příkazem, který následuje za cyklem.
Continue
Příkaz continue je v zásadě doplňkem příkazu break. Příkaz continue vynutí, aby proběhla další integrace v cyklu. Při tom přeskočí následující kód a pokračuje až u podmínky cyklu (například u for přeskočí kód a pokračuje až v dalším cyklu).