1. Stringtömb
Szeretnék egy rövid áttekintést adni Stringa tömbökről.
Mint korábban említettük, egy tömb bármilyen típusú lehet. Ez azt jelenti, hogy létrehozhat egy Strings tömböt. Ha olyan programot akarunk írni, amely "10 sort beolvas a billentyűzetről, és fordított sorrendben jeleníti meg", a kód így nézne ki:
|
ScannerObjektum létrehozása 10 elemű tömbobjektum létrehozása Hurok 0-ról 9-re Olvasson be egy karakterláncot a billentyűzetről, és mentse el a tömb következő cellájába Hurok 9-től 0-ig A következő cella megjelenítése a tömbben |
A kód alig változott! A tömb létrehozásakor csak intezt kellett helyettesítenünk . StringNos, és a karakterlánc billentyűzetről történő beolvasásakor a nextInt()metódust is lecseréltük a -ra nextLine().
2. Stringtömb a memóriában
És még egy hasznos tény. Nézzünk 3 képet:
1. kép: Egy Stringobjektum elrendezése a memóriában:

Ez a kép az előző leckékről készült.
Kérjük, vegye figyelembe, hogy a karakterlánc szövege nem közvetlenül a változóban tárolódik: külön memóriablokk van lefoglalva neki. Egy Stringváltozó a szöveget tároló objektum címét (hivatkozását) tárolja.
2. kép Egy egész tömb elrendezése a memóriában:

Ez a kép is ismerős.
3. kép: Egy karakterlánc tömb elrendezése a memóriában:

A bal oldalon egy tömbváltozót látunk, melynek típusa String[](egy tömbobjektum címét tárolja).
Középen van Stringmaga a tömbobjektum.
A jobb oldalon pedig szöveges objektumok találhatók, amelyek valamilyen szöveget tárolnak.
A Stringtömb cellái nem tárolják magukat a karakterláncokat (a String objektumok szövegét). Ehelyett tárolják a címeiket (a rájuk való hivatkozásokat). Ugyanúgy, mint Stringa változók a karakterlánc objektumok címeit (ahol a szöveget tárolják).
Vegye figyelembe ezt a tömbcellák összehasonlításakor:
|
Hozzon létre egy 10 karakterláncból álló tömböt. Tegyen értékeket a tömbbe true (a hivatkozások egyenlőek) false (a hivatkozások nem egyenlőek)true (a karakterláncok egyenlőek) true(a karakterláncok továbbra is egyenlőek) |
3. Gyors tömb inicializálás Java nyelven
A tömbök rendkívül hasznosak, ezért a Java készítői igyekeztek a lehető legkényelmesebbé tenni a velük való munkát.
Az első dolog, amit megtettek, az volt, hogy egyszerűsítsék a tömb inicializálását, azt a folyamatot, amellyel megadják a tömb kezdeti értékeit.
Hiszen a valahonnan kiolvasott adatok mellett egy programnak gyakran saját belső adataira is szüksége van a működéshez. Tegyük fel például, hogy minden hónap hosszát egy tömbben kell tárolnunk. Így nézhet ki a kód:
int[] months = new int[12];
months[0] = 31; // January
months[1] = 28; // February
months[2] = 31; // March
months[3] = 30; // April
months[4] = 31; // May
months[5] = 30; // June
months[6] = 31; // July
months[7] = 31; // August
months[8] = 30; // September
months[9] = 31; // October
months[10] = 30; // November
months[11] = 31; // December
De hála a Java készítőinek, van mód arra, hogy ezt tömörebben írjuk le:
// Lengths of months of the year
int[] months = new int[] { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Egyszerűen felsorolhatja a tömb összes értékét, vesszővel elválasztva!
Kényelmes, igaz? De ez még nem minden.
Ennek megfelelően a fordító a tömb értékeinek típusa alapján meg tudja határozni a tároló (tömbobjektum) típusát. A tömb hosszának meghatározásához pedig triviális a kapcsos kapcsos zárójelbe írt elemek számát megszámolni.
Ez azt jelenti, hogy ez a kód még rövidebbre is írható:
// Lengths of months of the year
int[] months = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };
Szépség, nem? 🙂
Ezt "gyors tömb inicializálásnak" hívják. Ez egyébként más típusoknál is működik, mint int...
// Names of months of the year
String[] months = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November ", "December"};
GO TO FULL VERSION