1. Matriser i minnet
I de forrige eksemplene var illustrasjonene litt unøyaktige.
Når du oppretter matriser (som når du oppretter strenger), tildeles to separate minneblokker: en for å lagre selve matrisen (beholderen) og en andre blokk for variabelen som lagrer adressen . Bildet nedenfor representerer denne avklaringen:
Minnet som er tildelt for arrayen av 10
int
elementer og int[]
variabelen som lagrer adressen til int
arrayet, vises i grønt.
Til sammenligning vises en ordinær int
variabel som lagrer verdien i blått.199
Dette minner litt om å lagre strenger i minnet, synes du ikke?
Det stemmer, strenger. Og akkurat som når du arbeider med strenger, kan du tilordne matrisevariabler til hverandre:
Kode | Forklaring |
---|---|
|
Lag en rekke 10 int elementer. Tilordne verdien 4 til cellen med indeks 2 . Tilordne verdien 9 til cellen med indeks 7 . I b variabelen lagrer du adressen som er lagret i a variabelen. Nå a og b pek på det samme array-objektet i minnet. I matriseobjektets celle med indeks 9 skriver du summen av verdiene som er lagret i celler 2 (som lagrer verdien 4 ) og 7 (som lagrer verdien 9 ). |
Matriseobjektet forblir akkurat der det var, og a
variablene og b
lagrer den samme adressen (referansen) til det samme objektet. Se på bildet:

2. Flere detaljer om arbeid med matriser
Du kan lage en rekke elementer av absolutt hvilken som helst type. For å gjøre dette, skriv ganske enkelt hakeparenteser etter typenavnet. Generelt ser det slik ut å lage en matrise:
type[] name = new type[number];
Der type er typen av elementene vi vil lagre i matrisen. Navn er navnet på variabelen vi skal bruke for å referere til matrisen, og tall er antall celler i matrisen.
Eksemplet ovenfor er den kanoniske formen for å lage en matrisevariabel og et matriseobjekt. I virkeligheten er dette to separate enheter.
Du kan opprette en matrisevariabel separat fra et matriseobjekt:
type[] name;
name = new type[number];
Og ett poeng til som ikke er uvesentlig:
Eksempler:
Kode | Forklaring |
---|---|
|
Lag en rekke n elementer |
|
Lag en matrise med 203 elementer |
|
|
0..99
en ArrayIndexOfBoundException
, som betyr at indeksen var utenfor arrayens grenser.
3. Matriselengde
Som du så i forrige eksempel, kan du lage en matrisevariabel for seg selv og deretter tilordne en verdi (en referanse til et matriseobjekt) til den et sted i koden. Du kan til og med gjøre dette:
Kode | Forklaring |
---|---|
|
Opprett en matrisevariabel hvis type er int[] Hvis a variabelen er mindre enn 10 , så opprett en matrise med 10 elementer. Ellers lag en rekke 20 elementer |
Og hva annet kan du gjøre med en slik matrise? Hvordan vet du hvor mange elementer som er i den?
For å hjelpe med dette har arrays en spesiell egenskap (variabel) kalt length
. Du kan finne lengden på en matrise ved å bruke dette uttrykket:
array.length;
Her array
er array-variabelens navn og length
er navnet på array-egenskapen. Verdien av length
egenskapen kan ikke endres: length
egenskapen i seg selv kan tilordnes til andre variabler, men ingenting kan tilordnes den (hvis du prøver å gjøre dette, vil programmet ganske enkelt ikke kompilere).
Vi kan fortsette med forrige eksempel slik:
Kode | Forklaring |
---|---|
|
Opprett en matrisevariabel hvis type er int[] Hvis a variabelen er mindre enn 10 , så opprett en matrise med 10 elementer. Ellers lag en matrise med 20 elementer Loop over alle elementene i matrisen: fra 0 til lengdearray.length - 1 |
4. Oppsummering av fakta om arrays i Java
La oss oppsummere hva vi vet om matriser:
Fakta 1. En matrise består av mange celler.
Fakta 2. Du får tilgang til en bestemt celle ved å bruke dens nummer (indeks).
Fakta 3. Alle celler er av samme type.
Fakta 4. Startverdien til alle cellene er 0 (hvis cellene lagrer tall), null
(hvis cellene lagrer objektreferanser), eller false
(hvis cellene lagrer boolean
verdier). Du vil lære mer om standardverdier i dette kapittelet .
Fakta 5. String[] list
er bare deklarasjonen av en variabel. Dette oppretter ikke selve beholderen (array-objektet). For å bruke variabelen må du først opprette en matrise (beholder) og tilordne den til variabelen. Se eksempelet nedenfor.
Fakta 6. Når vi lager et array-objekt (container), må vi angi hvor stort det er, altså hvor mange celler det inneholder. Dette gjøres med en uttalelse som: new TypeName[n]
;
Fakta 7. Lengden på en matrise kan bli funnet ved å bruke .length
egenskapen.
Fakta 8. Etter å ha opprettet en matrise, kan du ikke endre typen av elementene eller antall elementer den lagrer.
Kode | Forklaring |
---|---|
|
s er null list ernull |
|
Variabelen list lagrer en referanse til et objekt: en strengmatrise som består av 10 elementer. n er10 |
|
Refererer nå |
|
Et unntak (programfeil) vil bli kastet, dvs. programmet vil krasje. list lagrer en referanse tilnull |
|
Et array-out-of-bounds-unntak (programfeil) vil bli generert. Hvis a list lagrer 10 elementer/celler, er de gyldige indeksene: 0 1 2 3 4 5 6 7 8 9 — 10 elementer. |
GO TO FULL VERSION