Specialeffekter och spelutveckling
i Java(TM) - Arrayer
av Anibal Wainstein
4.0.3 Arrayer
Nu har vi kommit till den punkt där vi inte klarar oss
utan arrayer längre. En array är en grupp variabler
som alla är av samma typ. Man kan dra en parallell mellan
arrayer och t.ex. en hurts. Tänk dig att du har en låda
som representerar en variabel, lådan går sedan
in i en hurts tillsammans med andra exakt likadana lådor.
Hurtsen som lagrar lådorna är då arrayen.
Variablen i arrayen kallas för element. När
man initierar en array så måste man alltid först
bestämma hur många variabler den ska innehålla.
Detta görs med new kommandot. Man kan också
bestämma hur många dimensioner en array ska ha
men detta ska vi inte gå in på nu. Anta att vi
vill skapa en array med 5 st heltal, först deklarerar
vi en array av integers:
int minarray[]; Hakparanteserna
används för att indikera att variabeln "minarray"
är en array. Nu måste vi initiera arrayen och bestämma
hur många element den skall innehålla:
minarray = new int[5]; Arrayn "minarray"
innehåller nu 5 integers och du kan komma åt dem
genom att t.ex. skriva:
int forstaelementet=minarray[0];
int andraelementet=minarray[1];
int tredjeelementet=minarray[2];
int fjardeelementet=minarray[3];
int sistaelementet=minarray[4];
Siffran inom hakparanteserna pekar på första elementet
i arrayen, och kallas för arrayens index. Observera
att arrayer är alltid nollbaserade, dvs att första
elementet nås genom att specifiera en nolla (0 och inte
en 1 som man kanske skulle kunna tro). I det ovanstående
exemplet så når vi sista integern genom att skriva
en 4. Så 4 är maxgränsen för indexsiffran
trots att storleken på arrayen är 5. Man kan också
initiera och deklarera storleken på en array på
samma rad:
int minarray[] = new int[5];
Du kanske tror att du kan allt du behöver veta om arrayer
nu? Inte riktigt än... Observera att det vi har deklarerat
hittills inte har haft klasser som element. Nu ska vi se hur
man skapar arrayer av klasser. Anta att vi vill skapa en array
med 30 strängar:
String minastrangar[] = new String[30];
Det ser ju exakt likadant ut som exemplet ovan med integers
fast man byter ut "int" mot "String" istället!
Ja visst! Fast detta betyder inte att du är klar än.
Det du har lyckats skapa är bara en array med pekare.
Nu måste du dessutom initiera varje arrayelement för
sig:
minastrangar[0]=new String("Sträng 0");
minastrangar[1]=new String("Sträng 1");
minastrangar[2]=new String("Sträng 2");
...
minastrangar[29]=new String("Sträng 29");
Jobbigt va? Man vänjer sig! Ibland kan man också
hitta smarta sätt att slippa initiera varje element i
en array för sig och göra det automatisk. Exemplet
ovan kan skrivas så här:
String minastrangar[]=new String[30];
for (int i=0; i<30; i++)
{
minasträngar[i]=new String("Sträng "+i);
}
Observera att om du försöker lägga till en
integer, float eller double till en String så kommer
siffran automatiskt att omvandlas till en String objekt. Detta
har jag utnyttjat här ovan vid initieringen av strängen
("Sträng "+i) . En stor lycka är att arrayer
med integers och flyttal alltid har värdet noll på
sina element i början, så dessa behöver inte
initieras till noll.
Nästa sida >>
|