datae04 2005-01-24 Föreläsning 15 • • • • • • Deklarationer Kommentarer Variabler Operator Reserverade ord Flödeskontroll (while-sats, for-sats, do-while) • Utskrift • • • • Ett enkelt java program Inläsning’ Metoder Konstruktor Klasser • Enklaste java program måste man deklarera en klass. • För att ha ett körbart program så måste man ha en main-metod som koden nedan: public static void main(String[] args){ … } 1 Deklaration 2 Kommentarer • Dynamisk typning som finns i Python möjliggör att en variabel ska kunna ha flera typer under ett program. • Java stödjer inte dynamisk typning d.v.s. när man deklarerat en gång så går inte att deklarera om samma variabeln under senare delen av programmet. • En kommentar förklarar vad programmet gör. • Enradkommentar //Detta är en enradskommentar • Flerradskommentarer /* Denna kommentar går över flera rader*/ 3 4 Reserverade ord Variabler • Följande ord finns definierade i Java: abstract boolean break byte byvalue case cast catch char class const continue default do double else extends false final finally float for future generic Vahid Mosavat, Nada goto if implements import inner instanceof int interface long native new null operator outer package private protected public rest return short static super switch synchronized this throw throws transient true try var void volatile while 5 • En variabel är en identifierare som representerar ett minnesutrymme för en viss typ av data • Variabler måste deklareras innan dom används • Exempel: int antal; double längd; 6 1 datae04 2005-01-24 Primitiva datatyper Tilldelning • Varje värde som lagras i minnet är av en viss datatyp • Java har åtta fördefinierade typer som kallas primitiva datatyper: byte float short int long double boolean char • En variabel kan ges ett nytt värde genom tilldelning: x = y + 8; • I tilldelningssatsens vänsterled står en variabel • Högerledet kan vara ett värde, en variabel eller ett uttryck 7 8 Matematiska operatorer + * / / % Flödeskontroll 2.52 + 19 blir 21.52 4.18 - 0.02 blir 4.16 3.5 * 2 blir 7.0 19 / 4.0 blir 4.75 19 / 4 blir 4 19 % 4 blir 3 % ger resten vid heltalsdivision if if-else for sats while sats do-while sats 9 10 if-sats Exempel kod i Python : En if-sats består av följande delar 1.if 2.villkor-sats (Condition) 3.uttryck (statement) Tex: if (villkor-sats) uttryck; Villkor if bokPris > 500: prit ”dyrbok, ingen affär” falskt Motsvarande kod i Java: if ( bokPris > 500 ){ System.out.println(”dyr bok, ingen affär”); } sant Uttryck OBS! Indentering har inget betydelse för Java, vill man att flera rader kod ska hänga ihop använder man { }. Kod efter if satsen... 11 Vahid Mosavat, Nada 12 2 datae04 2005-01-24 for-sats if-else for-sats består av följande delar 1.for 2.(A;B;C) A är oftast deklaraton och initiering av veriabel B är ett villkor-sats (Condition) C oftast är en stegning-sats 3. uttryck (statement) if ( bokPris > 500 ) System.out.println(”dyr bok, ingen affär”); else System.out.println(”billig bok, jag köper”); for ( int i=0 ; i< 10; i++ ) { System.out.println(”Java är enkelt”); } 13 14 while-sats Utskrift Man kan skriva text på skärmen med int i=0; while (i<10) { System.out.println(”programmering är kul”); i++; } System.out.println(”Hej!”); Användaren kan få se värdet av en variabel med int ålder = 21; System.out.println(”Ålder: ” + ålder); 15 Inläsning Inläsning av tal Användaren kan ge en variabel ett nytt värde om programmet läser in från tangentbordet: 1. Importera bibliotek för att underlätta inläsningen • Metoden readLine() läser in en sträng. Vid behov kan man omvandla strängen till ett tal heltal = Integer.parseInt(rad); import java.io.*; 2. Se till att eventuella fel skickas vidare • Inläsning och omvandling kan göras i ett steg: public static void main ( String [] args) throws IOException { heltal = Integer.parseInt(stdin.readLine()); 3. Tala om varifrån inläsningen ska ske BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); • Och för flyttal: flyttal = Double.parseDouble(stdin.readLine()); 4. Läs in raden 1. raden = stdin.readLine (); 17 Vahid Mosavat, Nada 16 18 3 datae04 2005-01-24 Metoder i java Konstruktor • Det finns två typer av metoder i java – Klassmetoder: deklareras med nyckelordet static. – Instansmetoder: deklareras utan nyckelordet static • Static för java innebär att metoden hör till klassen. Alltså om man har en metoddeklaration utan static (instansmetod), kommer java att includera en kopia av metoden i varje instans av klassen. • Konstruktor är en speciell typ av metod som anropas när man skapar en instans av klassen. • I deklaration av en konstruktor anger man inga returtyper. 19 Instansvariabler och instansmetoder Hur ser klassmetoden ut i java kod? static String metodnamn( String parameternamn) Returtyp (utdata typ) i detta fall String Indata typ i detta fall String De får vi välja hur som helst 21 Vahid Mosavat, Nada 20 Deklaration av class Person { Deklaration av instansvariabler String name; konstruktor byte age; String mailAddress; public Person(String n, byte a,String m){ name=n; age=a; mailAddress=m ; } public String getName(){ return name; Deklaration av } instansmetoder public byte getAge(){ return age ; } public String getMailAddress (){ return mailAddress; } } 22 4