160 likes | 294 Views
Föreläsning 11. Arrayer. Arrayer. Lagrar flera värden av samma typ Kan vara primitiva typer eller objekt. int [] tal = new int [3];. Kan ha en array av t.ex: Heltal (int) Tecken (char) Personer (objekt av klassen Person) GeometriObjekt (Cirkel och Rektangel). Arrayer.
E N D
Föreläsning 11 Arrayer
Arrayer • Lagrar flera värden av samma typ • Kan vara primitiva typer eller objekt int[] tal = newint[3]; • Kan ha en array av t.ex: • Heltal (int) • Tecken (char) • Personer (objekt av klassen Person) • GeometriObjekt (Cirkel och Rektangel)
Arrayer • Array består av ett antal element • Varje element lagrar ett värde av arrayens typ • Varje element har ett index som avgör var i arrayen elementet finns tal[0] // första elementet, index 0tal[1] // andra elementet, index 1tal[2] // tredje elementet, index 2 • En array med N element har 0 som första index och N-1 som sista
Deklarera och Skapa Array Arrayens namn är tal Arrayen innehåller 10 element av typen int • Arrayen heltal kan deklareras och skapas på följande sätt: int[] tal; // Deklarerartal = newint[10]; // Skapar • Eller så här: int[] tal = newint[10];int tal[] = newint[10]; • tal[0], tal[1], …, tal[9]
Exempel På Olika Arrayer float[] priser = newfloat[500];boolean[] flags;flags = newboolean[20];char[] tecken = newchar[1750];int a = 33;double[] svar = newdouble[a + 67];float[] priser2 = priser;
Arrayer Är Objekt • I java ses en array som ett objekt • Instansierar en array med new • Finns en medlemsvariabel (length) • En variabel av typen array är en referensvariabel • Används arrayer som parameter skickas referensen, inte elementen • En array är dock inte en instans av klassen Array
Arrayer • användas i en uträkning tal[4] + 3; • tilldelas ett värde tal[4] = 3; • jämföras if (tal[4] == 67){...}; • skrivas ut System.out.println(tal[4]); • Element refereras med namnet på arrayen följt av dess index • tal[4] representerar en plats att lagra ett heltal av typen int • T.ex kan den:
Storleken på en Array • En array har en fast storlek, som inte kan förändras • Index som används för att referera ett element måste vara giltigt int tal[] = new int[10];int i = 3; int j = 5;tal[4]; // Refererar till 5:e elementettal[i]; // Refererar till 4:e elementettal[i + j] // Refererar till 9:e elementettal[j % i] // Refererar till 3:e elementet tal[4.4]; // Kan inte använda ett flyttal som indextal['4']; // Kan inte använda en char som indextal["4"]; // Kan inte använda en String som indextal[-1]; // Kan inte använda negativa tal som indextal[10]; // Kan inte använda tal större högsta index!
Storleken på en Array • Varje array har en publik konstant som kallas length • Denna konstant innehåller storleken på arrayen (antal element) tal.length; // Rätttal.length(); // Fel! • length innehåller antalet element, inte det högsta index. tal.length == 10 // Santtal.length == 9 // Falskt
En Array Av Objekt • Elementen i en array kan vara referenser till ett objekt • Deklarationen: Person[] familj = new Person[3]; • reserverar utrymme för att lagra 3 referenser till Person-objekt • Några Person-objekt skapas inte • Varje objekt i arrayen måste instansieras var för sig
En Array Av Personer familj 0 1 2 null null Notera! När en array skapas, så skapas inte objekten som ska lagras i arrayen. null • Skapar 4 objekt • 1 array för att lagra Person-objekt • 3 Person-objekt • Arrayen används sen för att ”komma åt” de enskilda elementen Person[] familj = new Person[3];familj[0] = new Person("Pappa Svensson", 33);familj[1] = new Person("Mamma Svensson", 31);familj[2] = new Person("Dotter Svensson", 8); String namn1 = familj[0].getNamn();familj[1].setNamn("Svea Svensson"); familj[2].print();
Initiering Av Arrayer • En array kan ges värden när den skapas • Omges av klamrar, separeras med komma • Storleken på arrayen bestäms genom antalet initieringsvärden int[] tal = {79, 87, 94, 82, 67, 98, 87, 81}; // 8 elementString[] ord = {"Hej", "Java", "Array", "Snö"}; // 4 elementdouble[] tal = {1.21, 32.212, 0.02, 10.1, 0.0}; // 5 elementString[] betygSkala = {"IG", "G", "VG", "MVG"}; // 4 element Person[] f = {new Person("Pappa Svensson", 33),new Person("Mamma Svensson", 31),new Person("Dotter Svensson", 8)}; // 3 element
2D Arrayer • En 2D-array är en array av arrayer • Första arrayens storlek måste anges • Den andra arrayen behöver inte vara av samma storlek int[][] array2d_1 = newint[10][10]; // 100 element totaltint[][] array2d_2 = newint[5][4]; // 20 element totaltint[][] array2d_3 = newint[2][]; // x element totaltarray2d_3[0] = newint[5];array2d_3[1] = newint[10]; • Exempel på initiering int[][] i = { {0,1}, {1,2} , {2,3} , {3,4}, {4,5} };
Arrayer Som Parametrar • En array kan skickas till en metod som en parameter int[] tal = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};add1(tal);publicvoid add1(int[] t) { ... } • Det är referensen till arrayen som skickas • Ändringar på ett element i metoden gör ändringar i ”originalet”
Arrayer som returvärde • En metod kan även returnera en array av en viss typ int[] tal = skapaHeltalsArray();publicint[] skapaHeltalsArray(){ int[] t = newint[10]; ...return t;}
Arrayer - Nackdelar • Fast storlek • Kan varken öka eller minska dynamiskt • Kan endast lagra en typ av element • Saknar användbara metoder Person[] familj = new Person[3];familj[0] = new Person("Pappa Svensson", 33);familj[1] = new Person("Mamma Svensson", 31);familj[2] = new Person("Dotter Svensson", 8);familj[3] = new Person("Son Svensson", 14); //kan inte ökafamilj[2] = new Hund("Karo"); //fel typ