Referenční typy - pole
4. Inicializace pole
Již jsme zmínili, že hodnoty prvků pole jsou automaticky inicializovány v závislosti na jejich datovém typu. Této inicializaci můžeme předejít specifikováním konkrétních hodnot u prvků pole oddělených čárkami ve složených závorkách.
Ilustrativní příklad PoleLidiInicializace
Program PoleLidiInicializace
- Popis: Inicializace celočíselného pole
- Zadání: Vytvořte instanci jednorozměrného celočíselného pole o 5 prvcích: 7, 5, 2, 4, 9. Instance se bude jmenovat poctyLidi
- Řešení: Bude postupně probráno v následujícím textu
Zkusme inicializovat vlastními hodnotami
jednorozměrné pole pocetLidi – viz Kód 1. Počet
hodnot ve složených závorkách musí odpovídat definované velikosti pole. Hodnoty
ve složených závorkách nemusí být konstanty, ale mohou to být i hodnoty vygenerované
za běhu programu (např. náhodná čísla).
//Vytvoření instance pole o 5 prvcích včetně inicializace int[] poctyLidi = new int[5] { 7, 5, 2, 4, 9 };
Kód 1: Příklad deklarace jednorozměrného pole s určením velikosti pole, vytvoření instance včetně inicializace
Určení velikosti pole lze také vynechat. Kompilátor si odvodí velikost pole z počtu hodnot uvedených ve složených závorkách – viz Kód 2.
/*Vytvoření instance pole o 5 prvcích včetně inicializace, kde * velikost pole je odvozena kompilátorem*/ int[] poctyLidi = { 7, 5, 2, 4, 9 };
Kód 2: Příklad deklarace jednorozměrného pole s odvozením velikosti pole, vytvoření instance včetně inicializace
Následující obrázek odráží podstatu předchozího kódu, který alokuje místo v paměti pro uložení pole - viz Obrázek 1.

Obrázek 1: Deklarace jednorozměrného pole poctyLidi včetně inicializace
Pole také může obsahovat struktury, nebo instance třídy. Inicializace probíhá tak, že každý jeho prvek vytvoříme zavoláním konstruktoru struktury, nebo třídy.
Ilustrativní příklad PoleStrukturInicializace
Program PoleStrukturInicializace
- Popis: Deklarace jednorozměrného pole obsahující jednotlivé struktury
- Zadání: Zkuste deklarovat pole struktur, které bude obsahovat prvky, které obsahují strukturu Cas. Jednotlivé struktury jsou inicializovány vlastním konstruktorem. Struktura bude obsahovat tři celočíselné datové složky (datový typ int):
- hodiny – počet hodin
- minuty – počet minut
- sekundy – počet sekund
Konstruktor struktury bude přijímat tři formální parametry: hodiny, minuty, sekundy. Pomocí hodnot těchto parametrů nastavte datové složky struktury Cas. Vytvořte v metodě Main pole struktur poleStruktur obsahující dva prvky struktury Cas vytvořených pomocí zavolání konstruktoru struktury. Inicializujte první prvek (struktury) pole hodnotami: 12, 30, 50 a druhý prvek: 5, 30, 6
- Řešení: Řešení bude postupně probráno v následujícím textu
Následující příklad popisuje vytvoření pole struktur pomocí volání konstruktoru
u jednotlivých prvků, tzn. jednotlivých struktur. Deklarujme nejprve strukturu Cas, která má tři soukromé celočíselné datové
složky hodiny, minuty, sekundy. Struktura
obsahuje konstruktor, který inicializuje hodnoty všech datový složek pomocí
formálních parametrů hodiny, minuty, sekundy – viz Kód 3.
//Deklarace datového typu struktura struct Cas { //Deklarace celočíselných datových složek private int hodiny, minuty, sekundy; //Deklarace konstruktoru public Cas(int hodiny, int minuty, int sekundy) { //Přiřazení hodnot celočíselným datovým složkám this.hodiny = hodiny; this.minuty = minuty; this.sekundy = sekundy; } }
Kód 3: Deklarace struktury Cas včetně inicializace jejích datových složek v konstruktoru
V metodě Main vytvoříme dva prvky pole s názvem poleStruktur obsahující jednotlivé struktury Cas . Jednotlivé struktury byly vytvořeny zavoláním
konstruktorů struktury Cas, které
jsou uzavřeny do složených závorek ve výrazu - viz Kód 4. Těmto konstruktorům jsou předány
skutečné parametry definované v kulatých závorkách u každého konstruktoru.
//Vytvoření pole struktur Cas včetně jejich inicializace Cas[] poleStruktur = { new Cas(12, 30, 50), new Cas(5, 30, 6) };
Kód 4: Příklad vytvoření instance poleStruktur včetně zavolání konstruktoru Cas pro jednotlivé struktury