Hvis et program trenger å jobbe med et antall verdier av det samme data-type, kan du erklære a variabel for hvert nummer. For eksempel et program som viser loddtall:
int lotteriNummer1 = 16;
int lotteriNummer2 = 32;
int lotteriNummer3 = 12;
int lotteriNummer4 = 23;
int lotteri nummer5 = 33;int lotteriNummer6 = 20;
En mer elegant måte å håndtere verdier som kan grupperes sammen er å bruke en matrise. En matrise er en beholder som har et fast antall verdier av en datatype. I eksemplet over kan lotteritallene grupperes sammen i en int-matrise:
int [] lotteryNumbers = {16,32,12,23,33,20};
Tenk på en matrise som en rad med kasser. Antall bokser i matrisen kan ikke endres. Hver boks kan inneholde en verdi så lenge den er av samme datatype som verdiene i de andre boksene. Du kan se i en boks for å se hvilken verdi den inneholder eller erstatte innholdet i boksen med en annen verdi. Når du snakker om matriser, kalles boksene elementer.
Erklæring og initialisering av en matrise
Erklæringserklæringen for en matrise ligner den som er brukt til
erklære enhver annen variabel. Den inneholder datatypen etterfulgt av navnet på matrisen - den eneste forskjellen er inkludering av firkantede parenteser ved siden av datatypen:int [] intArray;
float [] floatArray;røye [] charArray;
De erklæringserklæringer ovenfor fortelle kompilatoren det
intArrayvariabel er en rekke
ints,
floatArrayer et utvalg av
flyterog
charArrayer et utvalg av karer. Som en hvilken som helst variabel, kan de ikke brukes før den er initialisert ved å tildele den en verdi. For en matrise må tildelingen av en verdi til en matrise definere størrelsen på en matrise:
intArray = nytt int [10];
Tallet inne i parentesene definerer hvor mange elementer matrisen har. Ovennevnte tildelingsuttalelse skaper et int array med ti elementer. Det er selvfølgelig ingen grunn til at erklæringen og tildelingen ikke kan skje i en uttalelse:
float [] floatArray = new float [10];
Arrays er ikke begrenset til primitive datatyper. Det kan opprettes matriser av objekter:
Streng [] names = new String [5];
Ved hjelp av en matrise
Når en matrise er initialisert, kan elementene få verdier tildelt dem ved å bruke matrisens indeks. Indeksen definerer plasseringen til hvert element i matrisen. Det første elementet er på 0, det andre elementet på 1 og så videre. Det er viktig å merke seg at indeksen for det første elementet er 0. Det er lett å tenke at fordi en gruppe har ti elementer som indeksen er fra 1 til 10 i stedet for fra 0 til 9. Hvis vi for eksempel går tilbake til eksempel på lotteritall, kan vi lage en matrise som inneholder 6 elementer og tilordne lotteritallene til elementene:
int [] lotteryNumbers = new int [6];
lotterietall [0] = 16;
lotterietall [1] = 32;
lotterietall [2] = 12;
lotterietall [3] = 23;
lotterietall [4] = 33;lotterietall [5] = 20;
Det er en snarvei til å fylle elementer i en matrise ved å sette verdiene for elementene i erklæringen:
int [] lotteryNumbers = {16,32,12,23,33,20};Streng [] names = {"John", "James", "Julian", "Jack", "Jonathon"};
Verdiene for hvert element er plassert i et par krøllete parenteser. Verdienes rekkefølge bestemmer hvilket element som tildeles verdien som starter med indeksposisjon 0. Antall elementer i matrisen bestemmes av antall verdier inne i krøllete parenteser.
For å få verdien til et element brukes indeksen:
System.out.println ("Verdien av det første elementet er" + lotteryNumbers [0]);
For å finne ut hvor mange elementer en matrise har, bruker du feltfeltet:
System.out.println ("The lotteryNumbers array has" + lotteryNumbers.length + "elementer");
Merk: En vanlig feil når du bruker lengdemetoden er å glemme å bruke lengdeverdien som indeksposisjon. Dette vil alltid resultere i en feil da indeksposisjonene til en matrise er 0 til lengde - 1.
Multidimensjonale matriser
Arrayene vi har sett på så langt er kjent som endimensjonale (eller enkeltdimensjonale) matriser. Dette betyr at de bare har en rad med elementer. Imidlertid kan matriser ha mer enn en dimensjon. En flerdimensjonal er faktisk en matrise som inneholder matriser:
int [] [] lotteryNumbers = {{16,32,12,23,33,20}, {34,40,3,11,33,24}};
Indeksen for et flerdimensjonalt utvalg består av to tall:
System.out.println ("Verdien av element 1,4 er" + lotteryNumbers [1] [4]);
Selv om lengden på matriser inneholdt i en flerdimensjonal matrise ikke trenger å være like lang:
Streng [] [] navn = ny streng [5] [7];
Kopiering av en matrise
Å kopiere en matrise på den enkleste måten er å bruke
arraycopymetoden for systemklassen. De
arraycopymetoden kan brukes til å kopiere alle elementene i en matrise eller en del av dem. Det er fem parametere som er sendt til
arraycopymetode - den opprinnelige arrayen, indeksposisjonen for å begynne å kopiere et element fra, den nye arrayen, indeksposisjonen du vil sette inn fra, antall elementer som skal kopieres:
public static void arraycopy (Object src, int srcPos, Object dest, int destPos, int lengde)
For eksempel å lage en ny matrise som inneholder de fire siste elementene i en
intmatrise:
int [] lotteryNumbers = {16,32,12,23,33,20};
int [] newArrayNumbers = new int [4];System.arraycopy (lotteritall, 2, nyeArrayNumbers, 0, 4);
Som matriser er en fast lengde
arraycopymetoden kan være en nyttig måte å endre størrelsen på en matrise.
For å øke kunnskapen din om matriser kan du lære om å manipulere matriser ved å bruke Arrays klasse og lage dynamiske matriser (dvs. matriser når antall elementer ikke er et fast tall) bruker ArrayList-klasse.