Deze snelle les laat zien hoe je met arrays in Java kunt werken. Deze les maakt deel uit van een doorlopende reeks tutorials voor ontwikkelaars die Java leren om Android-applicaties te ontwikkelen.
Een array is een gemeenschappelijke gegevensstructuur die wordt gebruikt om een geordende lijst met items op te slaan. De array-elementen zijn getypt. U kunt bijvoorbeeld een reeks tekens maken om de klinkers in het alfabet weer te geven:
char aVowels [] = 'a', 'e', 'i', 'o', 'u';
Net als C of C ++ worden Java-arrays numeriek geïndexeerd op een 0-gebaseerd systeem. Dit betekent dat het eerste element in de array (dat wil zeggen 'a') op index 0 staat, de tweede ('e') op index 1, enzovoort.
Java maakt het werken met arrays eenvoudiger dan veel andere programmeertalen. De array zelf is een object (van het type array), met alle voordelen ervan. U kunt bijvoorbeeld altijd de grootte van een array controleren met behulp van de eigenschap length:
int lengte = aVowels.length;
U kunt elk object of primitief type in een array opslaan. U kunt bijvoorbeeld gehele getallen opslaan in een array:
int aNums [] = 2, 4, 6;
Of u kunt niet-primitieve typen zoals strings opslaan (of een andere klasse) in een array:
Tekenreeks aStooges [] = "Larry", "Moe", "Curly";
Soms wilt u objecten van verschillende typen in een array opslaan. U kunt altijd gebruikmaken van overerving en een bovenliggende klasse gebruiken voor het arraytype. De klasse Object is bijvoorbeeld de moeder van alle klassen ... dus u kunt verschillende typen opslaan in een enkele array zoals deze:
zweven een = 1.0f; Geheel getal twee = nieuw geheel getal (2); String three = "three"; Object aObjects [] = een, twee, drie;
De elementen van een Java-objectarray zijn verwijzingen (of handles) naar objecten, en niet werkelijke exemplaren van objecten. Een elementwaarde is null totdat er een geldig exemplaar van een object aan is toegewezen (dat wil zeggen dat de array automatisch wordt geïnitialiseerd maar dat u verantwoordelijk bent voor het toewijzen van de waarden).
Er zijn een aantal manieren om een array in Java te declareren. Zoals je hebt gezien, kun je een array declareren en meteen de elementen ervan opgeven met behulp van de syntaxis van de kronkelige haakjes in C-stijl. De volgende Java-code declareert bijvoorbeeld een array van gehele getallen met lengte 3 en initialiseert de array allemaal op één regel:
int aNums [] = 2, 4, 6;
U kunt ook een array met een specifieke grootte declareren en vervolgens de waarde van elk element afzonderlijk toewijzen, zoals dit:
double aPowersOfTwo [] = nieuw dubbel [5]; aPowersOfTwo [0] = Math.pow (2,0); aPowersOfTwo [1] = Math.pow (2,1); aPowersOfTwo [2] = Math.pow (2,2); aPowersOfTwo [3] = Math.pow (2,3); aPowersOfTwo [4] = Math.pow (2,4);
Dit komt overeen met het maken van een array als deze:
double aPowersOfTwoExplicit [] = 1.0d, 2.0d, 4.0d, 8.0d, 16.0d;
Er zijn verschillende andere manieren om arrays te maken. U kunt bijvoorbeeld de array-variabele maken en deze afzonderlijk toewijzen met behulp van het nieuwe sleutelwoord. U kunt de array-haakjes ook vóór de naam van de variabele plaatsen, als u dat wilt (dit is een stijlprobleem). De volgende Java-code definieert bijvoorbeeld een array met tekenreekselementen en wijst ze vervolgens afzonderlijk toe:
String [] aStopLightColors; aStopLightColors = nieuwe reeks [3]; aStopLightColors [0] = nieuwe reeks ("rood"); aStopLightColors [1] = nieuwe reeks ("geel"); aStopLightColors [2] = nieuwe reeks ("groen");
Zoals je hebt gezien, kun je arraymetingen toewijzen met behulp van de beugelsyntaxis:
U kunt arraywaarden ook per index ophalen. U kunt bijvoorbeeld als volgt het tweede element in de array aStopLightColors (gedefinieerd in de vorige sectie) openen:
String strCurrentLightColor = aStopLightColors [1];
Ten slotte worden arrays vaak gebruikt als een geordende lijst met objecten. Daarom vindt u mogelijk dat u de array wilt doorlopen in volgorde, waarbij u elk element op een methodische manier benadert.
Er zijn een aantal manieren om dit in Java te doen. Omdat u de grootte van een array altijd programmatisch kunt controleren, kunt u elk van de gebruikelijke lusmethoden gebruiken die u misschien al kent. De volgende Java-code declareert bijvoorbeeld een eenvoudige integer array van drie getallen en gebruikt een eenvoudige for-lus om de items te doorlopen:
int aNums [] = 2, 4, 6; voor (int i = 0; i < aNums.length; i++) String strToPrint = "aNums[" + i + "]=" + aNums[i];
Java biedt ook een zeer handig voor elke lus om arrays op een vriendelijke manier te herhalen. De for-each-lus helpt domme programmeerfouten te voorkomen die zo vaak voorkomen in lussen (off-by-one fouten, enz.). Als u de syntaxis van de for-each-lus wilt gebruiken, moet u uw loop-variabele definiëren, vervolgens een dubbele punt plaatsen en vervolgens de naam van uw array opgeven. De volgende code biedt bijvoorbeeld de vergelijkbare lusstructuur als de vorige for-lus die hierboven is weergegeven:
for (int num: aNums) String strToPrint = num;
Zoals je kunt zien, is de for-each-lus gelikt. U kent de index echter niet meer terwijl u itereert. Het kan dus niet in alle situaties worden gebruikt.
In deze korte les hebt u geleerd over arrays op Java. Arrays zijn een fundamentele gegevensstructuur die wordt gebruikt voor Java-programmering die een geordend aantal objecten van een bepaald type op een georganiseerde manier opslaat. In Java zijn arrays zelf objecten en slaan ze verwijzingen naar objecten op, waardoor toewijzing en gebruik eenvoudiger (maar subtiel anders) zijn dan hoe arrays in andere programmeertalen worden gebruikt.
Mobiele ontwikkelaars Lauren Darcey en Shane Conder hebben samen meerdere boeken geschreven over Android-ontwikkeling: een diepgaand programmeerboek getiteld Android Wireless Application Development en Sams TeachYourself Android Application Development binnen 24 uur. Wanneer ze niet schrijven, besteden ze hun tijd aan het ontwikkelen van mobiele software bij hun bedrijf en het leveren van consultingservices. Ze zijn te bereiken via e-mail naar [email protected], via hun blog op androidbook.blogspot.com, en op Twitter @androidwireless.