Elméleti alapozás

Java-nyelv néhány összetett adattípusa

www.informatika-programozas.hu - Ez a programozási feladat nehéz lesz!

 

Kérdés - Lehet-e tömböt másolni?

 

Egy tömb másolásakor több probléma is felmerülhet:

  1. egyeztetnünk kell a tömbök, illetve elemeinek típusait,

  2. egyeztetnünk kell a tömbök méreteit.

Ha ezt nem tesszük meg, a másolás során vagy adatvesztés léphet fel, vagy a művelet egyéb hibaüzenetek formájában végre sem hajtható. A problémát a Java-rendszermérnökei is észrevették, ezért azonnal bevethető kódegységet, metódust építettek be a java.lang.System osztályba arraycopy() néven. Ebben a metódusban...

 

arraycopy(Object src, int srcPos, Object dest, int destPos, int length)

 

...a következő paramétereket kell beállítanunk a korrekt tömbmásoláshoz:

A metódus a következő kivételeket dobhatja:

A metódus vizsgálatához nézzünk meg egy futtatható Java-kódot. Vegyük észre, hogy a metódushoz közvetlenül fértünk hozzá, azaz nem kellett importálnunk az őt tartalmazó System osztályt:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int forrasTomb[] = { 1, 2, 3, 4, 5 };
    int celTomb[] = { 10, 20, 30, 40, 50 };
    System.arraycopy(forrasTomb, 0, celTomb, 0, 5);
        for(int i = 0; i < celTomb.length; i++) {
            System.out.print(celTomb[i] + " ");
        }
    }
}


Végeredmény:

1 2 3 4 5

 

Jól láthatjuk, hogy a forrasTomb tartalma a celTomb nevű tömbbe átkerült. Nézzük meg a tömbtartalom kiírását foreach ciklussal is:

 

www.informatika-programozas.hu - Futtatható Java-kód!

 

 

 

 

 

 

 

 

public class Main {
public static void main(String[] args) {
    int forrasTomb[] = { 1, 2, 3, 4, 5 };
    int celTomb[] = { 10, 20, 30, 40, 50 };
    System.arraycopy(forrasTomb, 0, celTomb, 0, 5);
        for(int i : celTomb) {
            System.out.print(i);
        }
    }
}


Végeredmény:

1 2 3 4 5