Programování v jazyce Java

Kurz programování v Javě - 4. díl

 Úvodem  |  Kurz programování v Javě  |  Soubory ke stažení  |  Otázky a odpovědi

 

Úvod

Vítejte u dalšího dílu o základech programování v Javě. Dnes budeme probírat operátory.

Operátory

Operátory slouží k různým operacím. Určují jaké operace se provedou s operandy. Kdybychom šli více do hloubky, tak vlastně říkají překladači jaké operace chcete s hodnotami provést. Existují 6 skupin operátorů: aritmetické, logické, relační, bitové, přiřazovací a ternární.

Aritmetické operátory

Java definuje 7 aritmetických operátorů, jejich seznam najdete v následující tabulce.

Aritmetické operátory
Operátor Význam
+ sčítaní
- odčítání
* násobení
/ dělení
% zbytek po dělení
++ zvýšení o jedničku
-- snížení o jedničku

Všechny lze použít na číselné datové typy, celočíselné i reálné a znakový typ char. Všechny také mají stejný význam jako v matematice. Operátor % funguje tak, že 5 % 2 = 1, 5 / 2 = 2 a zbytek je 1, který nám operátor % vrátí. Pokud použijeme operátor / na celočíselné typy, nemůžeme počítat s desetinnou částí, výsledek může být nepřesný, 20 / 6 = 3, ale 20.0 / 6.0 = 3.33.

Význam operátoru ++ a -- si vysvětlíme na následujících příkladech. Operátor ++ přičte jedničku k číselné proměnné a operátor -- odečte jedničku.

Operátor ++ a --
int i = 10; // i je 10
i ++; // i je 11
i --; // i je 10

Oba lze zapsat jako prefix (před operand), nebo jako postfix (za operand, stejně jako v předchozí tabulce). Oba způsoby jsou vysvětleny v následující tabulce.

Operátor ++ a --
int i = 10; // i je 10
int t = i ++ // t je 10, ale i 11
int u = ++ t // u je 11 a t také

To znamená, že prefixový tvar hodnotu nejdříve zvětší a potom použije, ale postfixový přesně naopak, nejdříve použije původní hodnotu a potom zvětší. Oba tvary mají své využití.

Logické operátory

Logické operátory se používají k operacím s proměnnými typu boolean. A jejich výsledkem je také typ boolean.

Logické operátory
Operátor Význam
& AND - logický součin (konjunkce)
&& AND - logický součin se zkráceným vyhodnocováním
| OR - logický součet (disjunkce)
|| OR - logický součet se zkráceným vyhodnocováním
! NOT - negace
^ XOR - nonekvivalence
Operace s logickými operátory
A B A & B A && B A | B A || B ! A A ^ B
false false false false false false true false
false true false false true true true true
true false false false true true false true
true true true true true true false false

Operároty && a || fungují stejně jako & a | s tím rozdílem, že při logické podmínkové operaci se druhý operand vyhodnocuje jen tehdy, pokud je potřeba. Názorná ukázka je v programu na konci tohoto dílu.

Relační operátory

Relační operátory porovnávají hodnoty a jejich výsledkem je hodnota typu boolean. Proto se často používají ve spojení s logickými operátory, které pracují s hodotami typu boolean. Operátory == a != lze použít na všechny typy v Javě včetně objektových typů, ale ostatní jen na typy co mají vnítřní uspořádání. Takže je můžete použít na všechny jednoduché číselné typy (včetné typu char, což je vlastné normální celočíselný typ) a i některé objekty, ale nemůžete s nimi porovnávat typ boolean.

Relační operátory
Opeátor Význam
== rovná se
!= nerovná se
> větší
>= větší nebo rovno
< menší
<= menší nebo rovno

Ternární operátor

Ternární se jmenuje proto, že používá tři operandy.

Ternární operátor
výraz - podmínka ? výraz1 : výraz2;
Př.: int i = a == 10 ? 5 : 7;

Podmínka musí vracet typ boolean a pokud je výsledek true, tak se provede výraz1, jinak výraz2. V našem příkladě pokud by a se rovnalo 10, tak by se i přiřadila hodnota 5, jinak hodnota 7. Oba výrazy výraz1 i výraz2 musejí být stejného typu.

Program využívající operátory

V tomto programu použijeme jeden řídicí příkaz, který bude podrobněji rozebrán v některém z následujím díle, abychom mohli demonstrovat všechny operátory. Je to řídící příkaz if a jeho nejjednodušší syntaxe je:

Řídicí příkaz if
if (podmínka ) příkaz ;
Př.: if (a == 5) b = 8; // pokud je a rovno 5, tak b se přiřadí hodnota 8
Zdrojový kód programu Operatory.java
		  
public class Operatory {
  public static void main(String[] args) {
  
    int a = 10;
    int b = 15;
    int c;
    boolean bool = true;
  
    c = a * b;
    System.out.println(c);
  
    if (a == b || b == 15)  System.out.println("Prvni podminka splnena");
    if (a != b && b == 15)  System.out.println("Druha podminka splnena");
    if (a >= b)  System.out.println("Treti podminka splnena");
    if (! (a >= b))  System.out.println("Ctvrta podminka splnena");
    if (bool)  System.out.println("Pata podminka splnena");
    if (! bool)  System.out.println("Sesta podminka splnena");
    if (a == b || b == c || a == c || bool)  System.out.println("Sedma podminka splnena");
    if (c < a && (bool = b < a))  System.out.println("Osma podminka splnena");
//    if (c < a & (bool = b < a))  System.out.println("Osma podminka splnena");
    System.out.println(bool);
  
  }
}  
			  
		  

Na prvním je deklarace třídy s názvem Operatory a je definována jako public (veřejná). public je specifikátor přístupu a těmi se budeme zabývat později. Protože je to deklarace třídy, proto klíčové slovo class. Za identifikátorem následuje levá složená závorka, kterou třída začíná a končí pravou složenou závorkou. Na druhém řádku následuje deklarace veřejné (public), statické (static - význam si vysvětlíme později) metody s identifikátorem main. Má jen jeden parametr a to pole (pole si také vysvětlíme později) objektových datových typů String s identifikátorem args, tento identifikátor je jedinou věcí, kterou můžete na této deklaraci změnit. Když spustíme program, začíná jeho provádění právě v metodě main. Za kulatými závorkami ve kterých je deklarován parametr následuje, stejně jako u třídy levá složená závorka, kterou začíná tělo metody main() a končí pravou složenou závorkou. Metody, třídy a jejich specifikátory přístupu budeme probírat později. Na dalších dvou řádcích je deklarace a inicializace proměnných a a b. Na šestém je pouze deklarace proměnné c. 7. řádek obsahuje deklaraci a inicializaci hodnotou false logického typu boolean. Na 9. řádku se proměnné c přiřadí hodnota součinu proměnných a a b. Na dalším řádku je volání metody println() statického objektu out třídy System a jako parametr jí předáváme proměnnou c, kterou metoda vypíše do konzole. Následující řádky obsahují řídící příkazy if s různými podmínkami využívající operátory, které jsme se dnes naučili. Můžete si nejdříve rozmyslet, které hodnoty se vypíší a teprve poté spustit program. Pokud vám není něco jasné, napište mi váš problém a já se pokusím pomoci. Důležité také je, abyste různé experimentovali, třeba s tímto zdrojovým kódem.

Závěr

To je pro dnes vše. Příště se můžete těšit na bitové operátory, které se tolik nepoužívají, ale určité operace bez nich nejdou. Také probereme všechny operátory přiřazení, ale minimálně jeden už znáte dobře a to je operátor =. Řekneme si co jsou to literály a možná i něco dalšího.

Alen Dvořák