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 intelementer og int[]variablen, der gemmer arrayets adresseint , er vist med grønt.
Til sammenligning er en almindelig intvariabel, der lagrer værdien, 199vist 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 intelementer. Tildel værdien 4til cellen med indeks 2. Tildel værdien 9til 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 ). baab92479 |
Array-objektet forbliver lige hvor det var, og avariablerne bog 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 nelementer |
|
Opret et array med 203elementer |
|
|
0..99en 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 avariablen er mindre end 10, så opret en matrix af 10elementer. Ellers opret en række 20elementer |
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 arrayer arrayvariablens navn og lengther navnet på arrayets egenskab. Værdien af lengthegenskaben kan ikke ændres: lengthegenskaben 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 avariablen er mindre end 10, så opret en matrix af 10elementer. Ellers opret et array af 20elementer Loop over alle elementerne i arrayet: fra 0til 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 booleanvæ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 |
|---|---|
|
ser nulllisternull |
|
Variablen listgemmer en reference til et objekt: en strengmatrix bestående af 10elementer. ner10 |
|
Refererer nu |
|
En undtagelse (programfejl) vil blive kastet, dvs. programmet vil gå ned. listgemmer en henvisning tilnull |
|
En array-out-of-bounds-undtagelse (programfejl) vil blive genereret. Hvis a listgemmer 10elementer/celler, er de gyldige indekser: 0 1 2 3 4 5 6 7 8 9— 10elementer. |
GO TO FULL VERSION