1. Arrayer i minnet
I de tidigare exemplen var illustrationerna lite felaktiga.
När du skapar arrayer (som när du skapar strängar) allokeras två separata minnesblock: ett för att lagra själva arrayen (behållaren) och ett andra block för variabeln som lagrar dess adress . Bilden nedan representerar detta förtydligande:
Minnet som allokerats för arrayen av 10
int
element och int[]
variabeln som lagrar arrayens adressint
visas i grönt.
Som jämförelse visas en vanlig int
variabel som lagrar värdet i blått.199
Det här påminner lite om att lagra strängar i minnet, tycker du inte?
Just det, strängar. Och precis som när du arbetar med strängar kan du tilldela arrayvariabler till varandra:
Koda | Förklaring |
---|---|
|
Skapa en rad 10 int element. Tilldela värdet 4 till cellen med index 2 . Tilldela värdet 9 till cellen med index 7 . Spara adressen som är lagrad i variabeln i variabeln . Peka nu på samma arrayobjekt i minnet. I arrayobjektets cell med index skriver du summan av värdena som är lagrade i celler ( som lagrar värdet ) och (som lagrar värdet ) . b a a b 9 2 4 7 9 |
Arrayobjektet stannar precis där det var, och a
variablerna b
och lagrar samma adress (referens) till samma objekt. Titta på bilden:

2. Mer information om att arbeta med arrayer
Du kan skapa en rad element av absolut vilken typ som helst. För att göra detta, skriv helt enkelt hakparenteser efter typnamnet. Generellt sett ser det ut så här att skapa en array:
type[] name = new type[number];
Där typ är typen av element som vi kommer att lagra i arrayen. Namn är namnet på variabeln vi kommer att använda för att referera till arrayen, och nummer är antalet celler i arrayen.
Exemplet ovan är den kanoniska formen för att skapa en arrayvariabel och arrayobjekt. I verkligheten är dessa två separata enheter.
Du kan skapa en arrayvariabel separat från ett arrayobjekt:
type[] name;
name = new type[number];
Och en till punkt som inte är oväsentlig:
Exempel:
Koda | Förklaring |
---|---|
|
Skapa en rad n element |
|
Skapa en array med 203 element |
|
|
0..99
en ArrayIndexOfBoundException
, vilket betyder att indexet var utanför gränserna för arrayen.
3. Arraylängd
Som du såg i föregående exempel kan du skapa en arrayvariabel för sig själv och sedan tilldela ett värde (en referens till ett arrayobjekt) till den någonstans i koden. Du kan till och med göra detta:
Koda | Förklaring |
---|---|
|
Skapa en matrisvariabel vars typ är int[] Om a variabeln är mindre än 10 , skapa en matris med 10 element. Skapa annars en rad 20 element |
Och nu vad mer kan du göra med en sådan array? Hur vet du hur många element som finns i den?
För att hjälpa till med detta har arrayer en speciell egenskap (variabel) som heter length
. Du kan hitta längden på en array med detta uttryck:
array.length;
Här array
är arrayvariabelns namn och length
är namnet på arrayens egenskap. Värdet på length
egenskapen kan inte ändras: length
egenskapen i sig kan tilldelas andra variabler, men ingenting kan tilldelas den (om du försöker göra detta kommer programmet helt enkelt inte att kompilera).
Vi kan fortsätta med det föregående exemplet så här:
Koda | Förklaring |
---|---|
|
Skapa en matrisvariabel vars typ är int[] Om a variabeln är mindre än 10 , skapa en matris med 10 element. Skapa annars en array av element Slinga över alla element i arrayen: från till längd 20 0 array.length - 1 |
4. Sammanfattning av fakta om arrayer i Java
Låt oss sammanfatta vad vi vet om arrayer:
Fakta 1. En array består av många celler.
Fakta 2. Du kommer åt en specifik cell genom att använda dess nummer (index).
Fakta 3. Alla celler är av samma typ.
Fakta 4. Det initiala värdet för alla celler är 0 (om cellerna lagrar nummer), ( null
om cellerna lagrar objektreferenser) eller false
(om cellerna lagrar boolean
värden). Du kommer att lära dig mer om standardvärden i det här kapitlet .
Fakta 5. String[] list
är bara deklarationen av en variabel. Detta skapar inte själva behållaren (arrayobjektet). För att använda variabeln måste du först skapa en array (behållare) och tilldela den till variabeln. Se exemplet nedan.
Fakta 6. När vi skapar ett arrayobjekt (container) måste vi ange hur stort det är, dvs hur många celler det innehåller. Detta görs med ett uttalande som: new TypeName[n]
;
Fakta 7. Längden på en array kan hittas med hjälp av .length
egenskapen.
Fakta 8. Efter att ha skapat en array kan du inte ändra typen av dess element eller antalet element som den lagrar.
Koda | Förklaring |
---|---|
|
s är null list ärnull |
|
Variabeln list lagrar en referens till ett objekt: en strängarray som består av 10 element. n är10 |
|
Nu |
|
Ett undantag (programfel) kommer att skapas, dvs programmet kraschar. list lagrar en referens tillnull |
|
Ett array-out-of-bounds-undantag (programfel) kommer att genereras. Om a list lagrar 10 element/celler är de giltiga indexen: 0 1 2 3 4 5 6 7 8 9 — 10 element. |
GO TO FULL VERSION