Jelenlegi hely

10.1. Tömbök létrehozása és használata

Következzen az ArrayDemo nevű program, mely létrehoz egy tömböt, adatokkal tölti fel, majd kiírja tartalmát:

public class ArrayDemo {
    public static void main(String[] args) {
        int[] anArray;
        anArray = new int[10];
        for (int i = 0; i < anArray.length; i++) {
            anArray[i] = i;
            System.out.print(anArray[i] + " ");
        }
        System.out.println();
    }
}

A program kimenete:

0 1 2 3 4 5 6 7 8 9

Tömbök deklarálása

Ez a sor egy példaprogramból való, és egy tömb típusú változót deklarál:

int[] anArray;

Mint minden másfajta változó deklarálásakor, a tömb deklarálása is két részből áll: a tömb típusa és a tömb neve. A tömb típusa a tömb[] formátumban írható, ahol a típus a tömb által tartalmazott elemek típusa, a [] pedig azt jelzi, hogy tömbről van szó. A tömb minden eleme azonos típusú! A fenti példa int[] tömböt használ, tehát az anArray nevű tömb int típusú egészek tárolására lesz alkalmas. Néhány más típust tárolni képes tömb létrehozása:

float[] anArrayOfFloats;
boolean[] anArrayOfBooleans;
Object[] anArrayOfObjects;
String[] anArrayOfStrings;

Így is írható a deklaráció:

float anArrayOfFloats[];

Ez a forma nem ajánlott, mert a zárójelek jelzik, hogy tömbről van szó, így azok a típussal tartoznak össze, nem pedig a tömb nevével.

A tömb változók deklarálásával – mint bármely más nem primitív változóéval – sem jön létre tényleges tömb, és nem foglal le helyet a memóriában az elemek számára. A példakódban explicit módon kell létrehozni a tömböt és elnevezni anArray-nek.

Tömbök létrehozása

Tömb létrehozható explicit módon a Java new operátora segítségével. A példaprogram következő részében 10 egész tárolására szolgáló tömbhöz elegendő memóriát foglalunk le, és elnevezzük a már korábban deklarált anArray-nek.

anArray = new int[10];

Általában tömb létrehozásakor használni kell a new operátort, majd a tömb elemeinek típusát és végül a tömb méretét kell megadni szögletes zárójelek között:

new elemtípus[tömbméret];

Ha a new operátort kihagytuk volna a példaprogramból, a fordító leállt volna következő hibaüzenettel:

ArrayDemo.java:4: Variable anArray may not have been initialized.

Tömb kezdőérték beállítása

Használható a tömbök létrehozására és inicializálására a következő rövid formula:

boolean[] answers = {true, false, true, true, false};

Ilyekor a tömb nagyságát a {} közé írt elemek száma határozza meg.

Tömbelemek elérése

Most, hogy már megtörtént a memóriafoglalás a tömb számára, a program értékeket rendel a tömb elemeihez.

for (int i = 0; i < anArray.length; i++) {
    anArray[i] = i;
    System.out.print(anArray[i] + " ");
}

A kód ezen része azt mutatja be, hogy ahhoz, hogy hivatkozni tudjuk a tömb bármely elemére beírás vagy kiolvasás céljából, a tömb nevéhez egy []-et kell írni. A zárójelben (változó vagy egyéb kifejezés segítségével) írt érték az elérni kívánt tömbelem indexét jelöli.

Megjegyzés: A tömb (mivel objektum), tudja, hogy mekkora a mérete, és milyen index használható az indexelés során. Érvénytelen index esetén (a C nyelvvel szemben) a hiba futás közben egyértelműen kiderül: a futtatókörnyezetet egy ArrayIndexOutOfBoundsExeption típusú kivételt dob.

Tömb méretének meghatározása

A tömb méretének meghatározásához használható:

Tömbnév.length;

Figyelem! Azok, akiknek új a Java programnyelv, gyakran üres zárójelet raknak a length után. Ez nem működik, mert a length nem metódus! A length egy csak olvasható adattag, melyet a Java platform nyújt minden tömb számára.

A for ciklus a programunkban bejárja az anArray minden elemét, értéket adva nekik. A ciklus anArray.length–et használ a ciklus végének megállapításához.