1. Arrays in het geheugen
In de voorgaande voorbeelden waren de illustraties een beetje onnauwkeurig.
Bij het maken van arrays (zoals bij het maken van strings) worden twee afzonderlijke geheugenblokken toegewezen: een voor het opslaan van de array (container) zelf en een tweede blok voor de variabele die het adres ervan opslaat . Onderstaande afbeelding geeft deze verduidelijking weer:
Het geheugen dat is toegewezen aan de array van 10
int
elementen en de int[]
variabele die het adres van de int
array opslaat, wordt in groen weergegeven.
Ter vergelijking wordt een gewone int
variabele die de waarde opslaat 199
in blauw weergegeven.
Dit doet een beetje denken aan het opslaan van strings in het geheugen, vind je niet?
Dat klopt, touwtjes. En net zoals wanneer u met strings werkt, kunt u arrayvariabelen aan elkaar toewijzen:
Code | Uitleg |
---|---|
|
Maak een reeks 10 int elementen. Wijs de waarde toe 4 aan de cel met index 2 . Wijs de waarde toe 9 aan de cel met index 7 . Sla in de b variabele het adres op dat in de a variabele is opgeslagen. Wijs nu naar hetzelfde array-object in het geheugen. Schrijf in de cel van het array-object met index de som van de waarden die zijn opgeslagen in cellen (waarin de waarde wordt opgeslagen ) en (waarin de waarde wordt opgeslagen ). a b 9 2 4 7 9 |
Het array-object blijft waar het was en de a
variabelen b
en slaan hetzelfde adres (referentie) op naar hetzelfde object. Kijk naar de foto:

2. Meer details over het werken met arrays
U kunt een reeks elementen van absoluut elk type maken. Schrijf hiervoor gewoon vierkante haken achter de typenaam. Over het algemeen ziet het maken van een array er als volgt uit:
type[] name = new type[number];
Waar type het type is van de elementen die we in de array zullen opslaan. Naam is de naam van de variabele die we zullen gebruiken om naar de array te verwijzen, en nummer is het aantal cellen in de array.
Het bovenstaande voorbeeld is de canonieke vorm voor het maken van een arrayvariabele en een arrayobject. In werkelijkheid zijn dit twee afzonderlijke entiteiten.
U kunt een array-variabele afzonderlijk van een array-object maken:
type[] name;
name = new type[number];
En nog een punt dat niet onbelangrijk is:
Voorbeelden:
Code | Uitleg |
---|---|
|
Maak een reeks n elementen |
|
Maak een array met 203 elementen |
|
|
0..99
een ArrayIndexOfBoundException
, wat betekent dat de index buiten de grenzen van de array lag.
3. Array-lengte
Zoals je in het vorige voorbeeld hebt gezien, kun je zelf een arrayvariabele maken en er later ergens in de code een waarde aan toewijzen (een verwijzing naar een arrayobject). Je kunt zelfs dit doen:
Code | Uitleg |
---|---|
|
Maak een matrixvariabele waarvan het type is int[] Als de a variabele kleiner is dan 10 , maak dan een matrix met 10 elementen. Maak anders een reeks 20 elementen |
En wat kun je nu nog meer doen met zo'n array? Hoe weet je hoeveel elementen erin zitten?
Om hierbij te helpen hebben arrays een speciale eigenschap (variabele) genaamd length
. U kunt de lengte van een array vinden met behulp van deze uitdrukking:
array.length;
Hier array
is de naam van de arrayvariabele en length
de naam van de eigenschap van de array. De waarde van de length
eigenschap kan niet worden gewijzigd: de length
eigenschap zelf kan aan andere variabelen worden toegewezen, maar er kan niets aan worden toegewezen (als u dit probeert, zal het programma gewoon niet compileren).
We kunnen zo doorgaan met het vorige voorbeeld:
Code | Uitleg |
---|---|
|
Maak een matrixvariabele waarvan het type is int[] Als de a variabele kleiner is dan 10 , maak dan een matrix met 10 elementen. Maak anders een array met 20 elementen Loop over alle elementen van de array: van 0 tot lengtearray.length - 1 |
4. Samenvatting van feiten over arrays in Java
Laten we samenvatten wat we weten over arrays:
Feit 1. Een array bestaat uit veel cellen.
Feit 2. U krijgt toegang tot een specifieke cel door het nummer (index) te gebruiken.
Feit 3. Alle cellen zijn van hetzelfde type.
Feit 4. De beginwaarde van alle cellen is 0 (als de cellen getallen opslaan), null
(als de cellen objectreferenties opslaan) of false
(als de cellen waarden opslaan boolean
). In dit hoofdstuk leert u meer over standaardwaarden .
Feit 5. String[] list
is slechts de declaratie van een variabele. Hierdoor wordt de container (array-object) zelf niet gemaakt. Om de variabele te gebruiken, moet u eerst een array (container) maken en deze aan de variabele toewijzen. Zie onderstaand voorbeeld.
Feit 6. Wanneer we een array-object (container) maken, moeten we aangeven hoe groot het is, dwz hoeveel cellen het bevat. Dit wordt gedaan met een statement als: new TypeName[n]
;
Feit 7. De lengte van een array kan worden gevonden met behulp van de .length
eigenschap.
Feit 8. Nadat u een array hebt gemaakt, kunt u het type elementen of het aantal elementen dat wordt opgeslagen niet meer wijzigen.
Code | Uitleg |
---|---|
|
s is null list isnull |
|
De list variabele slaat een verwijzing naar een object op: een stringarray bestaande uit 10 elementen. n is10 |
|
Verwijst nu |
|
Er wordt een uitzondering (programmafout) gegenereerd, dwz het programma crasht. list slaat een verwijzing opnull |
|
Er wordt een array-out-of-bounds-uitzondering (programmafout) gegenereerd. Als elementen/cellen list worden opgeslagen 10 , zijn de geldige indices: 0 1 2 3 4 5 6 7 8 9 — 10 elementen. |
GO TO FULL VERSION