Sådan arbejder du med matriser: Erklæring og initialisering

Hvis et program skal arbejde med et antal værdier af det samme datatype, kan du erklære en variabel for hvert tal. For eksempel et program, der viser lotterienumre:

int lotteri nummer1 = 16;
int lotteryNumber2 = 32;
int lotteryNumber3 = 12;
int lotteri nummer4 = 23;
int lotteri nummer5 = 33;
int lotteri nummer6 = 20;

En mere elegant måde at håndtere værdier, der kan grupperes sammen, er at bruge en matrix. En matrix er en container, der har et fast antal værdier af en datatype. I ovenstående eksempel kunne lotteritallene grupperes sammen i en int-matrix:

int [] lotteryNumbers = {16,32,12,23,33,20}; 

Tænk på en matrix som en række kasser. Antallet af felter i matrixen kan ikke ændres. Hver boks kan indeholde en værdi, så længe den er af den samme datatype som værdierne i de andre felter. Du kan se inde i en boks for at se, hvilken værdi den indeholder eller erstatte indholdet i boksen med en anden værdi. Når man taler om matriser, kaldes kasserne elementer.

Erklæring og initialisering af en matrix

instagram viewer

Erklæringserklæringen for en matrix svarer til den, der er brugt til erklær enhver anden variabel. Den indeholder datatypen efterfulgt af navnet på matrixen - den eneste forskel er inkluderingen af ​​firkantede parenteser ved siden af ​​datatypen:

int [] intArray;
float [] floatArray; 
char [] charArray;

Det erklæringer ovenfor fortæl kompilatoren det

intArray
variabel er en matrix af
ints
,
floatArray
er en matrix af
flåd
og
charArray
er en matrix med fortegn. Som enhver variabel kan de ikke bruges, før den er initialiseret ved at tildele den en værdi. For en matrix skal tildelingen af ​​en værdi til en matrix definere størrelsen på en matrix:
intArray = nyt int [10]; 

Tallet inde i parenteserne definerer, hvor mange elementer arrayet indeholder. Ovenstående tildelingsopgørelse opretter en int-matrix med ti elementer. Der er selvfølgelig ingen grund til, at erklæringen og tildelingen ikke kan ske i én erklæring:

float [] floatArray = ny float [10]; 

Arrays er ikke begrænset til primitive datatyper. Arrays af objekter kan oprettes:

Streng [] names = new String [5]; 

Brug af en matrix

Når en matrix er initialiseret, kan elementerne få tildelt værdier ved hjælp af matrixens indeks. Indekset definerer placeringen af ​​hvert element i matrixen. Det første element er på 0, det andet element på 1 og så videre. Det er vigtigt at bemærke, at indekset for det første element er 0. Det er let at tro, at fordi en matrix har ti elementer, at indekset er fra 1 til 10 i stedet for fra 0 til 9. Hvis vi f.eks. Går tilbage til eksempel på lotteritall, kan vi oprette en matrix, der indeholder 6 elementer og tildele lotterinumrene til elementerne:

int [] lotteryNumbers = nyt int [6];
lotteritall [0] = 16;
lotteriumre [1] = 32;
lotteriumre [2] = 12;
lotterietal [3] = 23;
lotteritall [4] = 33;
lotteritall [5] = 20;

Der er en genvej til at udfylde elementer i en matrix ved at sætte værdierne for elementerne i erklæringssætningen:

int [] lotteryNumbers = {16,32,12,23,33,20};
Streng [] names = {"John", "James", "Julian", "Jack", "Jonathon"};

Værdierne for hvert element placeres i et par krøllede parenteser. Værdienes rækkefølge bestemmer, hvilket element der tildeles værdien, der starter med indeksposition 0. Antallet af elementer i matrixen bestemmes af antallet af værdier inden i de krøllede parenteser.

For at få værdien af ​​et element bruges dets indeks:

System.out.println ("Værdien af ​​det første element er" + lotteryNumbers [0]); 

For at finde ud af, hvor mange elementer en matrix har, der bruger længde-feltet:

System.out.println ("LotteriNumbers array har" + lotteriNumre.længde + "elementer"); 

Bemærk: En almindelig fejltagelse når man bruger længdemetoden er at glemme at bruge længdeværdien som en indeksposition. Dette vil altid resultere i en fejl, da indekspositionerne for en matrix er 0 til længde - 1.

Multidimensionelle arrays

De matriser, vi har kigget på indtil videre, er kendt som en-dimensionelle (eller enkeltdimensionelle) arrays. Dette betyder, at de kun har en række elementer. Arrays kan dog have mere end en dimension. En flerdimensionel er faktisk en matrix, der indeholder arrays:

int [] [] lotteryNumbers = {{16,32,12,23,33,20}, {34,40,3,11,33,24}}; 

Indekset for en multidimensionel matrix består af to tal:

System.out.println ("Værdien af ​​element 1,4 er" + lotteryNumbers [1] [4]); 

Selvom længden af ​​arraysne indeholdt i en multidimensionel matrix ikke behøver at være den samme længde:

Streng [] [] navne = ny streng [5] [7]; 

Kopiering af en matrix

For at kopiere en matrix er den nemmeste måde at bruge

arraycopy
metode til systemklassen. Det
arraycopy
metoden kan bruges til at kopiere alle elementerne i en matrix eller en underafsnit af dem. Der er fem parametre sendt til
 arraycopy
metode - den originale matrix, indekspositionen, der skal startes med at kopiere et element fra, den nye matrix, indekspositionen, der skal indsættes fra, antallet af elementer, der skal kopieres:
public static void arraycopy (Object src, int srcPos, Object dest, int destPos, int length)

For eksempel at oprette en ny matrix, der indeholder de sidste fire elementer i en

int 
vifte:
int [] lotteryNumbers = {16,32,12,23,33,20};
int [] newArrayNumbers = nyt int [4];
System.arraycopy (lotteritall, 2, nytArrayNumbers, 0, 4);

Da matriser er en fast længde

arraycopy
metode kan være en nyttig måde at ændre størrelsen på en matrix.

For at øge din viden om arrays kan du lære om at manipulere arrays ved hjælp af Arrays klasse og lave dynamiske arrays (dvs. arrays, når antallet af elementer ikke er et fast antal) bruger ArrayList-klasse.