Organisation En array Šr en ordnad lista av všrden Varje všrde har ett numeriskt index - deklaration & anvšndning som parametrar flerdimensionella fšlt N element indexeras med 0 till N-1 0 1 2 3 4 5 6 7 8 9 resultat 79 87 94 82 67 98 87 81 74 91 klassen Vector 1 2 Hakparenteser fšr att ange index MŒnga všrden av samma typ frekvens[4] É kan vara primitiva typer eller objekt et sjšlv Šr ett objekt Kan anvšndas šverallt dšr ett heltal fœr fšrekomma Namnet pœ fšltet blir dœ en referens variabel, och fšltet instansieras separat Tilldelning, utskrift, uttrycké. 3 4 int[] frekvens = new int[10]; Typen anger inte storleken Typen Šr int[] Instansieras till 10 heltal Indexeras 0..9 Se Basic_Array.java (s.210) Deklaration float[] priser = new float[500]; boolean[] flaggor; flaggor = new boolean[20]; char[] koder = new char[1750]; Exempel 5 6 1
Indexkontroll VŠl skapat Šr fšltet fixt Index mœste referera till existerande element index i intervallet 0ÉN-1 frekvens[(tal-1)/10] = frekvens[(tal-1)/10]+1; Index kontrolleras under kšrning off-by-one vanligt fel Varje fšlt objekt har en konstant length frekvens.length Antalet element, inte hšgsta index Se Reverse_Numbers.java (212) ets storlek 7 8 Hela fšltet kan initialiseras vid deklarationen Initialisering Observera : Ð new anvšnds inte Ð Ingen explicit storlek Initialisera med listor int[] enheter = 147, 323, 89, 933, 540, 269, 97, 114, 298, 476}; char[] kursniva = 'A', 'B', 'C', 'D'}; LŠngden bestšms av antalet element Endast vid deklarationen Se Primes.java och Sales_Analysis.java 9 10 Objekt som element Elementen i ett fšlt kan vara objektreferenser String[] barn = new String[5]; 5 referenser till objekt av typen String Inga objekt har skapats (referensen Šr null) Varje objekt skapas separat barn [0] = new String(ÓEmilieÓ); Eller (fšr String ) String[] barn = ÓEmilieÓ, ÓJohannaÓ, ÓJakobÓ, ÓEllenÓ, ÓFridaÓ }; Se Roll_Call.java (223) class Membership() private Member[] memberð_list; private int num_memberðs; som attribut 11 12 2
class Member () private String name; private int memberðship_number; Member Public Member (String member_name, int id_number) name = member_name; memberðship_number = id_number; }//konstruktorn É }//class Member Class Membership() private Member[] memberð_list; private int num_memberðs; Public Membership() num_members = 4; memberð_list = new Member[4]; memberð_list[4] = new Member(ÓJohnny StormÓ,70469);... } Membership 13 14 som parametrar Referensen šverfšrs och den formella och aktuella parametern blir alias ndringar pœverkar bœda Histogram import java.io.*; public class Histogram private final int MAX = 100; private final int MIN = 1; // private int[] frekvens = new int[(max + 1) / 10]; Elementen kan skickas och fšljer elementtypens regler Se Array_Test.java (225) 15 16 public void samlaintalen() throws IOException int tal; for (int index=0; index<frekvens.length; index=index+1) frekvens[index] = 0; do // Skriv ledtext och läs värden Out.print("Ge ett tal mellan " + MIN + " och " + MAX + " (-1 för avslut): "); tal = In.readInt(); // Validera input räkna frekvensen if (tal!= -1) if (tal >= MIN && tal <= MAX) frekvens[(tal-1)/10] = frekvens[(tal-1)/10]+1; else //felaktig inmatning Out.print("Talet måste ligga i [" + MIN + "," + MAX + "]"); }//tal!= -1 }//do while (tal!= -1); }// metod samlaintalen samlaintalen skrivtabellen public void skrivtabellen() Out.println(); for (int index=0; index<frekvens.length; index++) switch (index) } case 0 : Out.print (...); break; case 9 : Out.print (...); break; default : Out.print (...); for (int index2=0; index2<frekvens[index];index2++) Out.print ("*"); Out.println(); }//for-loopen }// metod skrivtabellen 17 18 3
/* pp 6.25 */ import java.io.*; public class Pp625 public static void main(string[] args) throws IOException Histogram histogram = new Histogram(); histogram.samlaintalen(); histogram.skrivtabellen(); }// main }// Pp625 Kšrningen 19 20 Flerdimensionella fšlt Flerdimensionella fšlt En-dimensionella fšlt = listor av všrden TvŒ-dimensionella fšlt - tabeller med rader & kolumner TvŒ index av fšlt i Java, medfšr att raderna kan ha olika lšngd Kan initialiseras med listor Lista av listor Varje dimension har en egen lšngdkonstant Se Multi_Array_Test.java (229) 21 22 Klassen Vector Servicemetoder addelement (Object element) Ett objekt av klassen Vector liknar ett fšlt removeelement (Object element) Men contains (Object element) Ð Lagrar b ara referenser till objekt av typen Object Ð Inte samma syntax fšr indexering elementat (int index) elementat (int index) firstelement () Klassen tillhšr java.util 23 lastelement () size () println šverlagrad till Vector -klassen Se Beatles.java (233) 24 4
Klassen Vector Listtypen dynamisk Implementeras med fšlt Om mer utrymme behšvs, skapas ett nytt objekt och elementen kopieras šver 25 5