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.

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).