Syntax: Class Declaration Modifier Class Body Basic Class Member Klassdeklaration class Class Member Field Declaration Constructor Declaration Method Declaration Identifier Class Associations Motsvarar variabel deklaration Class Body 70 Syntax: Basic Method Declaration Modifier Metoddeklaration Type void Identifier Ej resultat Parameters Method Body public void changesize (int newheight, int newwidth) Parameter public float getarea ( ) Resultatets datatyp 71 Parameteröverföring I Java överförs alla parameter by value Värdet på den aktuella parametern kopieras till den formella parametern (motsvarar tilldelnings) När en referens överförs blir den formella parametern ett alias för aktuell parameter return-en anger vilket värde som returneras (dvs överförs tillbaka) Överförs också by value 72 Programmeringsfel En dator gör inte det programmeraren menade, den gör precis det ett programs semantik föreskriver. Man kan skiljer tre typer av fel Kompileringsfel När kompilatorn upptäcker att syntaxreglerna ej har följts eller att vissa typer ej är kompatibla (t ex int i = c ;) Run-time fel När programmet kraschar när det körs, t ex pga division med noll eller att typer ej är kompatibla Logiska fel När programmet verkar fungera bra, men levererar fel resultat 73 Primitiva datatyper: Hel- och flyttal De olika heltals och flyttals typerna har olika storlek Typ byte short int long float double Storlek 8 bits 16 bits 32 bits 64 bits 32 bits 64 bits Minimum -128-32,768-2,147,483,648 < -9 x 10 18 Maximum 127 32,767 2,147,483,647 > 9 x 10 18 +/- 3.4 x 10 38 med 7 signifikanta siffror +/- 1.7 x 10 308 med 15 signifikanta siffror 74 Primitiva datatyper: Tecken En variabel av datatypen char sparar precis ett s k Unicode tecken Värdemängden är en ordnad uppräkning av tecken Det finns 65,536 unika Unicode tecken (16 bit) med tecken och symboler från olika språk, t ex 'å' och 'ö' Alla tecken är ordnade och varje tecken motsvarar en siffra (detta underlättar att kolla om ett tecken ligger t ex mellan 'a' och 'z') Se t.ex. http://www.unicode.org/ för detaljer 75 1
Primitiva datatyper: boolean En variabel av datatypen boolean innehåller antingen värdet eller värdet Används ofta för att definiera logik Det finns tre logiska operatorer i Java inte (!), och (&&) och eller ( ) a!a a b a && b a b 76 Konstanter Som variabler fast deras värde får inte ändras Markeras med reserverade ordet final Guideline: Använd bara stora bokstäver final double PI = 3.14159; final char NEWLINE = \n ; Fördelar Vettiga namn istället för konstiga siffror eller tecken Lättare att förstå koden Enklare att uppdatera 77 Uttryck 1 Ett uttryck är en programkonstruktion som producerar (evalueras till) ett resultatvärde av en viss datatyp. Ett uttryck kan (bl a) vara: Ett primitivt värde (literal) -5, 1.23e2, c, En variabel/konstant smallbluerectangle, PI En metodanrop atriangle.getarea() En tilldelning height = newheight 78 Uttryck 2 Ett uttryck är en syntaktiskt korrekt kombination av literaler, variabler, metodanrop, tilldelningar och operatorer. Typiska exempel på operatorer: Aritmetiska, t ex +, -, *, /, Logiska:!, &&, Relations, t ex ==,!=, <, >=, Uttryck kan vara komplexa Prioritetsordning för att bestämma hur det ska evalueras Se http://java.sun.com/docs/books/tutorial/java/nutsandbolts/expressions.html för en fullständig lista 79 Relations operatorer == Identiskt lika!= Inte identiskt lika < Mindre än <= Mindre än eller lika med > Större än >= Större än eller lika med 80 Prioritetsordning Operatorer med högre prioritet evalueras först Vid samma prioritet avgör associativiteten hos operatorerna (vänster-höger / höger-vänster) Uttryck: Evalueringsordning: Resultat: 5 + 12 / 5-10 % 3 6 3 1 4 2 Använd parenteser för att vara på säkra sidan (5 + (12 / 5)) - (10 % 3) 81 2
Uttryck 2 + 3 * 4 / 2 3 * 13 + 2 (3 * 13) + 2 3 * (13 + 2) Exempel 4 * (11-6) * (-8 + 10) (5 * (4-1)) / 2 Resultat 8 41 41 45 40 7 82 Uttryck 3 Resultatvärdets datatyp hos ett uttryck beror på operatorn och datatyperna hos operanderna. Uttryck 17 / 5 17.0 / 5 17 / 5.0 9 / 12 9 / 12.0 6 % 2 7 % 2.5-7 % 2.5 Resultat 3 3.4 3.4 0 0.75 0 2.0-2.0 int dollar = 25; float money; money = dollar; // OK, money blir 25.0 dollar = money; // FEL, typerna är // icke kompatibla 83 Satser Satserna (statements) är grundinstruktionerna i ett programspråk. Block används för att gruppera er OBS! Varje kan i sin tur vara ett block 84 Ordning på erna Sekvens Satserna exekveras en efter en Standard Urval Man väljer om er ska exekveras eller ej if-, if-else-, switch- Repetition Satsen exekveras ett visst antal gånger while-loop, do-loop, for-loop 85 if-en Villkor if () Villkoret är ett uttryck Måste evaluera till / Ett s k boolskt uttryck Kan vara mer eller mindre komplicerat i == j!(a > b) && (i == j+5-k) 86 87 3
if-else-en if () 1; else 2; 1 2 switch (expression) case value1: 1; break; case value2: 2; break; switch-en Uttrycket måste vara heltal eller tecken Motsvarar nästade if-er 88 default: N; OPTIONAL 89 while-en while () Gå runt i varv Villkoret evalueras på nytt före varje varv Satsen utförs/utförs inte en gång till Villkoret testas inte kontinuerligt Satsen utförs alltid helt 90 Oändliga loopar Det får hända att en inte exekveras Villkoret måste någon gång bli falskt, annars kommer man inte ut ur loopen Vanligt logiskt fel Se t ex int count = 1; while (count!= 25) count = count *2; System.out.println ("Done"); // exekveras aldrig 91 do do-en while (); Motsvarar omvänd while- Villkoret evalueras på nytt efter varje varv Satsen utförs minst en gång for-en for (initialisering; ; förändring) motsvarar initialisering; while () förändring; Fast loop Initialisering, och förändring brukar refererar till samma variabel Loop-variabeln bör inte ändras i erna 92 93 4
for-en Exempel initialisering förändring for (int antal=1; antal < 75; antal++) System.out.println (antal); for (int num=5; num <= total; num = num*2) sum = sum + num; System.out.println (sum); 94 95 Programflödet Programflödet är sekventiellt Sats efter i den beskrivna ordningen Återhoppet sker till anropsstället method1() method2(); method2() return ; 96 5