Používání proměnných typu pole

Přehled informací

Jednorozměrná pole

Proměnnou typu pole je výhodné použít v případě, že potřebujete manipulovat se skupinou souvisejících objektů. Zjednodušeně se dá uvést, že pole Vám umožní uložit a přistupovat k množině objektů stejného typu v rámci jedné proměnné. Na proměnnou typu pole je možné v Javě pohlížet jako na objekt, který ukazuje na množinu dalších objektů.

Pole v Javě nemohou měnit svoji velikost a v programu nelze použít index ukazující mimo hranice pole.

Vytvoření objektu pole probíhá ve dvou krocích jako u jiných proměnných. Nejprve musíte objekt deklarovat a poté musíme vytvořit instanci objektu. Java umožňuje dva rovnocenné způsoby deklarace pole:

  typ_prvků_pole jméno_pole[];
  typ_prvků_pole[] jméno_pole;

Všimněte si, že v deklaraci není uvedena velikost pole! Instanci objektu pole poté vytvoříme pomocí klíčového příkazu new. Při vytváření objektu pole musíme uvést velikost pole:

  jméno_pole[] = new typ_prvků_pole[počet_prvků];

Ve svých programech asi budete častěji využívat deklaraci proměnné pole a vytvoření instance v jedinném kroku (je jednodušší na psaní a výsledný program je čitelnější):

  typ_prvků_pole jméno_pole[] = new typ_prvků_pole[počet_prvků];

Příklad deklarace a inicializace pole prvniPole o 10 prvcích typu integer

  int prvniPole[] = new int[10];

Pole primitivních datových typů je v Javě možné při deklaraci inicializovat na potřebné hodnoty.

Příklad inicializace pole druhePole o čtyřech prvcích na samé jedničky

  int druhePole[] = {1, 1, 1, 1};

Pole objektů vytvoříme stejným způsobem jako pole primitivních typů. Jediný rozdíl je, že pole objektů se inicializuje na hodnotu null:

  typ_Objektu jméno_pole[] = new typ_Objektu [počet_prvků_pole];

Vícerozměrná pole

Deklarace vícerozměrného pole je obdobné jako deklarace jednorozměrného pole. Deklarace vícerozměrného pole se liší pouze v přidání dvojice hranatých závorek pro každý další rozměr:

  typ_prvků_pole jméno_pole[][];
  typ_prvků_pole[][] jméno_pole;
  typ_prvků_pole[] jméno_pole[];

Při vytváření instance vícerozměrného pole postupujte obdobným způsobem:

  typ_prvků_pole jméno_pole[][] = 
    new typ_prvků_pole[počet_prvků1][počet_prvků2];

Příklad deklarace a inicializace pole dvourozmernePole o 10x10 prvcích typu integer

  int dvourozmernePole[][] = new int[10][10];

Pole primitivních datových typů je v Javě možné při deklaraci inicializovat na potřebné hodnoty.

Příklad inicializace pole dvourozmernePole2 o 2x2 prvcích na samé jedničky

  int dvourozmernePole2[][] = {{1, 1}, {1, 1}};

Pole objektů vytvoříme stejným způsobem jako pole primitivních typů. Jedinný rozdíl je, že pole objektů se inicializuje na hodnotu null:

  typ_Objektu jméno_pole[][] =_
   new typ_Objektu [počet_prvků_pole1][počet_prvků_pole1];
  

Práce s proměnnými (objekty) typu pole

Indexování polí

Každý prvek v poli má svůj specifický index (uvádí se v hranatých závorkách za jménem proměnné pole). Indexování pole je v Javě podobné jako v C/C++. První prvek pole má index = 0, druhý prvek je rovný 1 atd.

Příklad průchodu a vypsání všech prvků pole testPruchodu:

  int testPruchodu[] = {11, 22, 33}
  for (int i = 0; i < 3; i++)
  {
    System.out.println(testPruchodu[i]);
  }

Poznámka - indexování polí

Při indexaci pole, Java nejprve prověří, jestli index není záporný nebo větší nebo roven velikosti pole. Pokud index není ve vymezeném intervalu, vygeneruje Java výjimku IndexOutOfBoundsException a ukončí program. Tímto Java zamezuje neoprávněnému přístupu do paměti počítače.

Přiřazení hodnoty prvku pole

Prvek pole je možné používat jako kteroukoliv jinou proměnnou. Do prvku pole je možné přiřazovat hodnotu, hodnotu z prvku pole číst atd.

Příklad přiřazení hodnoty do prvku pole testPruchodu (pole bylo deklarováno v předchozím příkladě):

  testPruchodu[1] = 55;

Zjištění délky pole

Pole je v Javě objektem. Pole, jako objekt, obsahuje jedinnou členskou proměnnou - length - velikost pole. Proměnná length je užitečná zejména při procházení pole pomocí příkazu cyklu. Proměnnou length lze v programu pouze číst.

Příklad průchodu přes pole pomocí cyklu

  int poleTest[] = {11, 22, 33, 44, 55, 66}
  for (int i = 0; i < poleTest.length; i++)
  {
    System.out.println("Prvek pole č. " + i 
      + " má hodnotu " + poleTest[i] + ".");
  }

Výstupem uvedeného úseku kódu by byl výpis:

  Prvek pole č. 0 má hodnotu 11.
  Prvek pole č. 1 má hodnotu 22.
  Prvek pole č. 2 má hodnotu 33.
  Prvek pole č. 3 má hodnotu 44.
  Prvek pole č. 4 má hodnotu 55.
  Prvek pole č. 5 má hodnotu 66.