130 likes | 240 Views
Kapittel 7. Array (lister og tabellar). 7.1 Arrayelement. Array (lister, tabellar) er kjent frå VB Blir brukt til å organisere data når vi har mange dataelement av same sort I Java startar indekseringa alltid på 0 Indeks står i klammeparentes: [indeks]
E N D
Kapittel 7 Array (lister og tabellar)
7.1 Arrayelement • Array (lister, tabellar) er kjent frå VB • Blir brukt til å organisere data når vi har mange dataelement av same sort • I Java startar indekseringa alltid på 0 • Indeks står i klammeparentes: [indeks] • Indeksen er alltid eit ikkje-negativt heiltal, vi kan bruke matematiske uttrykk som indeks så lenge resultatet blir eit heiltal
7.2 Deklarering og bruk • Array er objekt, blir laga med new() • int[] height = new int[17]; • Her får vi eit array med plass til 17 heiltal • Indeksane vil vere frå 0 til 16 • Alle verdiar er i utgangspunktet 0 • Alle Java array er iteratorar, så vi kan bruke foreach – versjonen av for-loop • [] operatoren sjekkar indeksgrenser • Vi bør likevel sjekke dette sjølve for å unngå feil • Størrelsen til eit array er konstant
Deklarering og bruk • Alternativ syntaks bør ikkje brukast • int[] grades viser tydeleg at vi skal ha eit array av integers • int grades[] viser mindre tydeleg kva vi skal ha • Bruk av initialiseringsliste • Vi kan initialisere med {verdi1, verdi2, ..., verdiN} når arrayet blir deklarert, ikkje for å endre verdiar seinare • Array som parameter • Merk at eit array er eit objekt, så ein kopi av referansen (adressa) blir sendt som parameter • Metoden som får ein slik parameter kan endre element i arrayet
7.3 Array av objekt • Vi kan bruke array til å samle objekt på same måte som primitive typer • Vi får i så fall eit array av objektreferanser • Tunes-eksemplet • CDCollection som eigen klasse • Inneheld eit array CD[] • Har metoder for å administrere samlinga • I Java har vi også “ferdigsydde” collection-klasser • CD-klassen representerer ein enkelt CD
7.4 Kommandolinjeargument • Vi kan no avsløre kva ‘String[] args’ betyr! • Array av String-referanser som er sendt til main() metoden ved oppstart • Blir vanlegvis kalla args, men namnet er valfritt • Ved kjøring via kommandolinja vil dei to første argumenta (java klassenamn) ikkje bli med • I NetBeans må vi spesifisere eventuelle kommandolinjeargument spesielt • Ofte brukt når vi kjører eit program mange ganger med ulike argument • Bruk args.length for å sjekke talet på argument
7.5 Parameterlister med variabel lengde • Vi kan bruke ... mellom type og namn for å tillate eit vilkårleg tal parameter til ein metode • public double average(int ... list) • Desse parametra blir automatisk kopiert inn i eit array • Maks eit slikt sett av parameter pr metode • Alltid til slutt i parameterlista
7.6 Todimensjonale array • Eit todimensjonalt array tilsvarer rader og kolonner i ein tabell • To indeksar • int[][] tabell = new int[antRader][antKol]; • tabell[rad][kolonne] = verdi; • Kvar rad er å betrakte som eit separat array • Vi kan ha fleire dimensjonar etter behov
7.7 ArrayList klassen • Dette er eit eksempel på ein collection-klasse • Finst i java.util – pakken • Fungerer som eit array med tilleggstenester • Størrelsen blir automatisk regulert • Legge til eller fjerne element automatisk, sjå liste over metoder i figur 7.6 • Vi kan spesifisere elementtype • ArrayList<String> band; • Typesjekking inkludert, vi kan ikkje legge til anna enn String-objekt • Vi treng ikkje caste objekt vi hentar ut • Effektivitet ved ulike operasjonar
7.8 Mangekanter • Vi kan bruke array til å tegne komplekse former • Metoder i Graphics-klassen • drawPolygon() • Array eller objekt av Polygon-klassen som parameter • drawPolyline()
7.9 Mouse events • Ulike events (hendingar) med mus • Vi deler opp i Mouse Events • Pressed • Released • Clicked • Entered • Exited • og Mouse Motion Events • Moved • Dragged
Mouse events • To ulike interface vi kan implementere for å reagere på bruk av mus • MouseListener • MouseMotionListener • Vi går gjennom Dots og RubberLines • Dots – vi må tegne alt på nytt om vi vil ta vare på “gammal” informasjon • RubberLines – tegne som respons på at musa flyttar seg
7.10 Tastetrykk • Vi kan også reagere på tastetrykk • Implementere KeyListener • Felles for listener-interfaces er at vi må implementere tomme metoder for det vi ikkje bryr oss om å reagere på