Ak program potrebuje pracovať s viacerými rovnakými hodnotami Dátový typ, mohli by ste vyhlásiť premenlivý pre každé číslo. Napríklad program, ktorý zobrazuje čísla lotérií:
int lotteryNumber1 = 16;
int lotteryNumber2 = 32;
int lotteryNumber3 = 12;
int lotteryNumber4 = 23;
int lotteryNumber5 = 33;int lotteryNumber6 = 20;
Elegantnejší spôsob riešenia hodnôt, ktoré je možné zoskupiť, je použitie poľa. Pole je kontajner, ktorý uchováva pevný počet hodnôt typu údajov. Vo vyššie uvedenom príklade by sa lotériové čísla mohli zoskupovať do jedného poľa:
int [] lotteryNumbers = {16,32,12,23,33,20};
Pole považujte za rad polí. Počet polí v poli sa nemôže zmeniť. Každé pole môže obsahovať hodnotu, pokiaľ má rovnaký typ údajov ako hodnoty obsiahnuté v ostatných políčkach. Môžete sa pozrieť do poľa a zistiť, akú hodnotu obsahuje, alebo môžete nahradiť obsah inej hodnoty. Keď sa hovorí o poliach, boxy sa nazývajú prvky.
Vyhlásenie a inicializácia poľa
Vyhlásenie pre pole je podobné ako v minulosti deklarovať akúkoľvek inú premennú
. Obsahuje typ údajov, za ktorým nasleduje názov poľa - jediným rozdielom je zahrnutie hranatých zátvoriek vedľa typu údajov:int [] intArray;
float [] floatArray;char [] charArray;
colné vyhlásenia vyššie povedzte kompilátoru, že
intArrayPremenná je pole
ints,
floatArrayje pole
plavákya
charArrayje pole znakov. Rovnako ako všetky premenné, nemôžu byť použité, kým nebudú inicializované priradením hodnoty. Pre pole musí priradenie hodnoty k poľu definovať veľkosť poľa:
intArray = new int [10];
Číslo v zátvorkách definuje, koľko prvkov pole obsahuje. Vyššie uvedený príkaz na priradenie vytvorí pole int s desiatimi prvkami. Neexistuje samozrejme dôvod, prečo k vyhláseniu a prideleniu nemôže dôjsť jedným vyhlásením:
float [] floatArray = nový plavák [10];
Polia nie sú obmedzené na primitívne typy údajov. Polia objektov môžu byť vytvorené:
String [] names = new String [5];
Použitie poľa
Po inicializácii poľa môžu mať prvky priradené hodnoty pomocou indexu poľa. Index definuje pozíciu každého prvku v poli. Prvý prvok je 0, druhý prvok 1 a tak ďalej. Je dôležité si uvedomiť, že index prvého prvku je 0. Je ľahké si to predstaviť, pretože pole má desať prvkov, že index je od 1 do 10 namiesto od 0 do 9. Napríklad, ak sa vrátime k príkladu čísel lotérií, môžeme vytvoriť pole obsahujúce 6 prvkov a priradiť čísla lotérií k prvkom:
int [] lotteryNumbers = new int [6];
lotteryNumbers [0] = 16;
lotteryNumbers [1] = 32;
lotériové čísla [2] = 12;
lotériové čísla [3] = 23;
lotériové čísla [4] = 33;lotériové čísla [5] = 20;
Existuje skratka na vyplnenie prvkov v poli vložením hodnôt pre prvky do vyhlásenia:
int [] lotteryNumbers = {16,32,12,23,33,20};String [] names = {"John", "James", "Julian", "Jack", "Jonathon"};
Hodnoty pre každý prvok sú umiestnené vo vnútri dvoch zložených zátvoriek. Poradie hodnôt určuje, ktorý prvok je priradený hodnote začínajúcej indexovou pozíciou 0. Počet prvkov v poli je určený počtom hodnôt vo vnútri zátvoriek.
Na získanie hodnoty prvku sa používa jeho index:
System.out.println ("Hodnota prvého prvku je" + lotteryNumbers [0]);
Ak chcete zistiť, koľko prvkov pole používa pole dĺžky:
System.out.println ("Pole lotteryNumbers má" + lotteryNumbers.length + "elements");
Poznámka: Bežnou chybou pri použití metódy dĺžky je zabudnúť použiť hodnotu dĺžky ako polohu indexu. Vždy to bude mať za následok chybu, pretože indexové pozície poľa sú 0 až dĺžka - 1.
Viacrozmerné polia
Polia, ktoré sme doteraz skúmali, sú známe ako jednorozmerné (alebo jednorozmerné) polia. To znamená, že majú iba jeden rad prvkov. Polia však môžu mať viac ako jednu dimenziu. Multidimenzionálne je pole, ktoré obsahuje polia:
int [] [] lotteryNumbers = {{16,32,12,23,33,20}, {34,40,3,11,33,24}};
Index pre viacrozmerné pole pozostáva z dvoch čísel:
System.out.println ("Hodnota prvku 1,4 je" + lotérieNumbers [1] [4]);
Aj keď dĺžka polí obsiahnutých vo viacrozmernom poli nemusí byť rovnaká dĺžka:
String [] [] names = new String [5] [7];
Kopírovanie poľa
Najjednoduchším spôsobom kopírovania poľa je použitie
arraycopymetóda triedy System.
arraycopymetódu možno použiť na skopírovanie všetkých prvkov poľa alebo ich podsekcie. Do protokolu je odovzdaných päť parametrov
arraycopymetóda - pôvodné pole, pozícia indexu na začatie kopírovania prvku, nové pole, pozícia indexu na začatie vkladania, počet prvkov na kopírovanie:
verejná statická neplatné pole (Object src, int srcPos, Object dest, int destPos, int length)
Napríklad na vytvorenie nového poľa obsahujúceho posledné štyri prvky
intarray:
int [] lotteryNumbers = {16,32,12,23,33,20};
int [] newArrayNumbers = new int [4];System.arraycopy (lotteryNumbers, 2, newArrayNumbers, 0, 4);
Keďže polia majú pevnú dĺžku,
arraycopymetóda môže byť užitočným spôsobom, ako zmeniť veľkosť poľa.
Ak chcete rozšíriť svoje znalosti o poliach, môžete sa dozvedieť viac o manipulácii s poliami pomocou polí trieda a vytváranie dynamických polí (t. j. polí, ak počet prvkov nie je pevné číslo) pomocou Trieda ArrayList.