1. Arrays i hukommelsen
I de foregående eksempler var illustrationerne lidt unøjagtige.
Når du opretter arrays (som når du opretter strenge), allokeres to separate hukommelsesblokke: en til lagring af selve arrayet (beholderen) og en anden blok til den variabel, der gemmer dens adresse . Billedet nedenfor repræsenterer denne afklaring:
Hukommelsen, der er allokeret til arrayet af 10
int
elementer og int[]
variablen, der gemmer arrayets adresseint
, er vist med grønt.
Til sammenligning er en almindelig int
variabel, der lagrer værdien, 199
vist med blåt.
Dette minder lidt om at gemme strenge i hukommelsen, synes du ikke?
Det er rigtigt, strenge. Og ligesom når du arbejder med strenge, kan du tildele arrayvariabler til hinanden:
Kode | Forklaring |
---|---|
|
Opret en række 10 int elementer. Tildel værdien 4 til cellen med indeks 2 . Tildel værdien 9 til cellen med indeks 7 . Gem adressen gemt i variablen i variablen. Peg nu på det samme array-objekt i hukommelsen. I matrixobjektets celle med indeks skal du skrive summen af de værdier, der er gemt i celler (som gemmer værdien ) og (som gemmer værdien ). b a a b 9 2 4 7 9 |
Array-objektet forbliver lige hvor det var, og a
variablerne b
og gemmer den samme adresse (reference) til det samme objekt. Se på billedet:
2. Flere detaljer om at arbejde med arrays
Du kan oprette en række elementer af absolut enhver type. For at gøre dette skal du blot skrive firkantede parenteser efter typenavnet. Generelt ser det sådan ud at oprette et array:
type[] name = new type[number];
Hvor type er typen af de elementer, vi vil gemme i arrayet. Navn er navnet på den variabel, vi vil bruge til at henvise til arrayet, og nummer er antallet af celler i arrayet.
Eksemplet ovenfor er den kanoniske form til at skabe en matrixvariabel og et matrixobjekt. I virkeligheden er disse to separate enheder.
Du kan oprette en matrixvariabel separat fra et matrixobjekt:
type[] name;
name = new type[number];
Og endnu et punkt, der ikke er ubetydeligt:
Eksempler:
Kode | Forklaring |
---|---|
|
Opret en række n elementer |
|
Opret et array med 203 elementer |
|
|
0..99
en ArrayIndexOfBoundException
, hvilket betyder, at indekset var uden for arrayets grænser.
3. Array længde
Som du så i det foregående eksempel, kan du oprette en array-variabel for sig selv og derefter tildele en værdi (en reference til et array-objekt) til den et sted i koden. Du kan endda gøre dette:
Kode | Forklaring |
---|---|
|
Opret en matrixvariabel, hvis type er int[] Hvis a variablen er mindre end 10 , så opret en matrix af 10 elementer. Ellers opret en række 20 elementer |
Og hvad kan du ellers gøre med sådan et array? Hvordan ved du, hvor mange elementer der er i det?
For at hjælpe med dette har arrays en speciel egenskab (variabel) ved navn length
. Du kan finde længden af et array ved at bruge dette udtryk:
array.length;
Her array
er arrayvariablens navn og length
er navnet på arrayets egenskab. Værdien af length
egenskaben kan ikke ændres: length
egenskaben selv kan tildeles andre variabler, men intet kan tildeles til den (hvis du prøver at gøre dette, vil programmet simpelthen ikke kompilere).
Vi kan fortsætte med det forrige eksempel sådan her:
Kode | Forklaring |
---|---|
|
Opret en matrixvariabel, hvis type er int[] Hvis a variablen er mindre end 10 , så opret en matrix af 10 elementer. Ellers opret et array af 20 elementer Loop over alle elementerne i arrayet: fra 0 til længdearray.length - 1 |
4. Sammenfatning af fakta om arrays i Java
Lad os opsummere, hvad vi ved om arrays:
Fakta 1. Et array består af mange celler.
Fakta 2. Du tilgår en bestemt celle ved at bruge dens nummer (indeks).
Faktum 3. Alle celler er af samme type.
Fakta 4. Startværdien af alle celler er 0 (hvis cellerne gemmer tal), null
(hvis cellerne gemmer objektreferencer), eller false
(hvis cellerne gemmer boolean
værdier). Du vil lære mere om standardværdier i dette kapitel .
Faktum 5. String[] list
er blot erklæringen af en variabel. Dette opretter ikke selve containeren (array-objektet). For at bruge variablen skal du først oprette et array (container) og tildele det til variablen. Se eksemplet nedenfor.
Fakta 6. Når vi opretter et array-objekt (container), skal vi angive, hvor stort det er, altså hvor mange celler det indeholder. Dette gøres med et udsagn som: new TypeName[n]
;
Fakta 7. Længden af et array kan findes ved hjælp af egenskaben .length
.
Fakta 8. Efter at have oprettet et array, kan du ikke ændre typen af dets elementer eller antallet af elementer, det gemmer.
Kode | Forklaring |
---|---|
|
s er null list ernull |
|
Variablen list gemmer en reference til et objekt: en strengmatrix bestående af 10 elementer. n er10 |
|
Refererer nu |
|
En undtagelse (programfejl) vil blive kastet, dvs. programmet vil gå ned. list gemmer en henvisning tilnull |
|
En array-out-of-bounds-undtagelse (programfejl) vil blive genereret. Hvis a list gemmer 10 elementer/celler, er de gyldige indekser: 0 1 2 3 4 5 6 7 8 9 — 10 elementer. |
GO TO FULL VERSION