Java/Klíčová slova

Java má jako klíčová slova následující: abstract, assert (od Javy 1.4), boolean, break, byte, case, catch, char, class, const, continue, default, do, double, else, enum (od Javy 5.0), extends, final, finally, float, for, goto, if, implements, import, instanceof, int, interface, long, native, new, package, private, protected, public, return, short, static, strictfp (od Javy 1.2), super, switch, synchronized, this, throw, throws, transient, try, void, volatile a while.

abstract

editovat

Klíčové slovo abstract se používá u tříd a u metod.

  • Použití u třídy značí, že daná třída nemůže být instancována (zdánlivá výjimka níže), jedná se o takzvanou abstraktní třídu (instancovatelná třída se nazývá konkrétní). Z pochopitelného důvodů se nemůže jednat o třídu finální – aby měla abstraktní třída smysl, musíme mít možnost odvodit od ní podtřídy. Klíčové slovo se u tříd píše obvykle za modifikátory přístupu a za případně použité klíčové slovo static.
  • U metody je možné použít abstract pouze tehdy, je-li metodou abstraktní třídy. Abstraktní metoda se pouze deklaruje, neimplementuje se. Proto nemůže být finální, statická, nativní ani soukromá. Píše se před návratovou hodnotu metody.

U abstraktních tříd (a jejich metod) se nejčastěji použijí až podtřídy, abstraktní metody je ovšem možné implementovat i přímo při instancování – ve skutečnosti pak jde o ovšem o instancování nepojmenované jednorázové podtřídy.

public abstract class AbstraktniTrida {
    /** Abstraktní metoda nemá žádnou implementaci ani tělo */
    public abstract void abstraktniMetoda();
    /** Konkrétní metoda implementaci má */
    public void konkretniMetoda() {
        System.out.println("Již implementováno.");
    }
}

  // implementace abstraktní metody při instancování
  // mojeInstance je instancí nepojmenované podtřídy!
  AbstraktniTrida mojeInstance = new AbstraktniTrida () {
      public void abstraktniMetoda() {
         System.out.println("Už je implementováno.");
      }
  }

Klíčové slovo assert se používá pro aserce, což jsou tvrzení o stavu programu, která by měla být pravdivá z hlediska jeho vnitřní logiky a jejichž případné nekontrolování nebude mít vliv na správný běh odladěného programu. Nepoužívají se například na ověřování správného vstupu od uživatele. Jejich syntaxe je:

assert výraz1 [: výraz2];

kde první výraz musí být vyhodnocen jako pravdivý, jinak je vyvolána výjimka s druhým výrazem jako parametrem. Například

assert seznam != null && seznam.délka() > 0 : "seznam je prázdný";
Object hodnota = seznam.get(0);

Aserce, tedy kontrolování v nich uvedených podmínek, je možné zapnout či vypnout. Obvykle slouží k jejich zapnutí přepínače -ea nebo -enableassertions z příkazového řádku.

boolean

editovat

Klíčové slovo boolean označuje stejnojmenný primitivní typ proměnné. Jedná se o proměnné nabývající jen dvou možných hodnot: true (pravda) a false (nepravda). Jejich přednastavenou hodnotou je false.

Klíčové slovo break se používá pro opuštění cyklu a také pro ukončení větve příkazu switch. Příklad pro cyklus:

for (int i = 0; ; i++) {
  System.out.println("Iterace " + i);
  if ( i == 5 ) {
    break; // 5* je dost
  }
}

Příklad pro switch:

int i;
String den;

switch (i) {
  case 1: den = "pondělí";
          break;
  case 2: den = "úterý";
          break;
  case 3: den = "středa";
          break;
  case 4: den = "čtvrtek";
          break;
  case 5: den = "pátek";
          break;
  case 6: // není ukončeno breakem, takže vykonávaní pokračuje přes case 7
  case 7: den = "víkend";
          break;
}

Klíčové slovo byte označuje jeden z primitivních typů, totiž osmibitové znaménkové celé číslo. Používá se na patřičných místech, kde se používají datové typy, například pro deklaraci proměnné:

byte hodnota = 4;

Klíčové slovo case se používá v blocích příkazu switch pro uvození jednotlivých hodnot určujících jednotlivé větve.

Klíčové slovo catch je součástí mechanismu výjimek a používá se v blocích uvozených klíčovým slovem try.

Klíčové slovo char definuje jeden z primitivních typů. Je zkratkou anglického characterznak a je určeno pro jednotlivé znaky standardu Unicode. Lze jej používat také jako neznaménkové šestnáctibitové číslo.

Klíčové slovo class uvozuje deklaraci a definici třídy.

Rozvitá Backusova-Naurova forma deklarace třídy vypadá následovně:

deklarace-třídy ::= [přístupové modifikátory] class identifikátor
                      [rozšiřuje] [implementuje] 
                      tělo-třídy

rozšiřuje ::= extends jméno-třídy
implementuje ::= implements jména-rozhraní 
jména-rozhraní ::= jméno-rozhraní [, jména-rozhraní]
tělo-třídy ::= { [členské-deklarace] }
členské-deklarace = členská-deklarace [členské-deklarace]
členská-deklarace = deklarace-položky 
                     | inicializátor 
                     | konstruktor 
                     | deklarace-metody
                     | deklarace-třídy

Klíčové slovo const je sice rezervované, ale v dosavadních verzích Javy není nijak využívané. K označení entit za konečné slouží klíčové slovo final.

continue

editovat

Klíčové slovo continue slouží k ukončení stávající iterace cyklu. Na rozdíl od klíčového slova break ovšem neukončuje cyklus; běh pokračuje další iterací. Například

for (int i = 1; i <= 3; i++){
   if (2 == i) continue;
   System.out.println("Iterace č. " + i);
}

vypíše hlášku pro první a třetí iteraci, druhá je ukončena před výpisem.

default

editovat

Klíčové slovo default je součástí konstrukce příkazu switch. Jedná se o uvození větve, která je zvolena, pokud žádná jiná větev nevyhovuje.

Klíčové slovo do uvozuje cyklus do-while, jehož konstrukce je

do {
  // příkazy
} while (podmínka)

Tedy například

int i=1;
do {
  i += 1;
  System.out.println(i);
} while (i <= 10)

Klíčové slovo double označuje jeden z primitivní typů. Jedná se o 64bitová číslo s plovoucí řádovou čárkou. Existuje k němu i standardní třída java.lang.Double pro případy, kde je vhodnější s takovými čísly operovat jako s objekty.

Klíčové slovo else je volitelnou součástí podmíněného příkazu if. Je jím uvozen blok příkazů, které se mají provést, pokud není podmínka splněna.

Příklad:

if (hodnota > 5) {
  System.out.println("Je to víc než pět.");
} else {
  System.out.println("Není to více než pět.");
}

Klíčové slovo enum umožňuje deklarovat výčtový typ.

Příklad:

/** Výčet dnů */
enum Den { Pondeli, Utery, Streda, Ctvrtek, Patek, Sobota, Nedele };

extends

editovat

Klíčové slovo extends slouží při definici třídy (klíčové slovo class) nebo rozhraní (klíčové slovo interface) k určení, jakou třídu, respektive rozhraní, rozšiřuje.

Příklady:

public class NovaTrida extends StaraTrida 
{
  //...
}
 
public interface NoveRozhrani extends StareRozhrani
{
  //...
}

Klíčové slovo final má různý významy podle toho, zde se užije u deklarace třídy, metody a nebo proměnné.

Použití u třídy

editovat

U třídy použití klíčového slova final zakazuje odvozování potomků. Jedná se tedy o určitý protiklad klíčového slova #abstract a použití obou slov zároveň u stejné třídy je nemožné.

Použití u metod

editovat

U metod použití klíčového slova final zakazuje překrytí metody v potomcích.

Použití u proměnných

editovat

U proměnné znamená použití slova final, že smí být nastavena pouze jednou. Pokud se jedná o primitivní typ, znamená to, že už se nesmí změnit jeho hodnota. Pokud je proměnná odkazem na objekt, znamená to, že nesmí být nastavena na jiný objekt, ale objekt sám se měnit může.

finally

editovat

Klíčové slovo finally uvozuje podblok kódu v rámci bloku try, který se má provést na konci, ať už došlo nebo nedošlo k výjimce, dokonce i v případě, že je dříve v bloku příkaz return.

Klíčové slovo float deklaruje jeden z primitivních typů, dvatřicetibitové znaménkové číslo s pohyblivou řádovou čárkou.

float teplota = 21.37;

Klíčové slovo for uvozuje cyklus typu for.

Například kousek kódu:

for ( int i=1; i < 4; i++ ) {
  System.out.println("Toto je " + i + ". iterace.");
}

vypisuje

Toto je 1. iterace.
Toto je 2. iterace.
Toto je 3. iterace.

Klíčové slovo goto je rezervováno pro budoucí užití.

Klíčové slovo if uvozuje podmíněný příkaz:

if (podmínka) {
  příkaz_pokud_splněna_podmínka;
} else {
  příkaz_pokud_nesplněna_podmínka;
}

Jak je vidět z příkladu, často je používáno současně s klíčovým slovem else.