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ů];
int prvniPole[] = new int[10];
Pole primitivních datových typů je v Javě možné při deklaraci inicializovat na potřebné hodnoty.
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];
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];
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.
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];
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]); }
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.
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;
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.
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.