Föreläsning 2 Primitiva datatyper Variabler och konstanter Tilldelning Inläsning Operatorer Villkorssatsen if Slingor: while och for
Primitiva datatyper Varje värde som lagras i minnet är av en viss datatyp Java har åtta fördefinierade typer som kallas primitiva datatyper: bytefloat shortdouble intboolean longchar
Heltal Det finns fyra olika heltalstyper: Namn byte short int long Storlek 8 bitar 16 bitar 32 bitar 64 bitar Min-värde ,768 -2,147,483,648 < -9 x Max-värde ,767 2,147,483,647 > 9 x 10 18
Flyttal Det finns två flyttalstyper: Namn float double Storlek 32 bitar 64 bitar Min-värde -3.4 x x Max-värde 3.4 x x
Tecken I en variabel av typen char kan ett tecken lagras Java använder teckenkodningssystemet Unicode som lagrar tecken i 16 bitar Tecken från många olika språk finns med, däribland å, ä och ö. Se Teckenkonstanter omges av apostrofer, t ex ’a’ ’&’ ’\n’ (retur) ’\’’ (apostrof)
Boolean En boolesk variabel kan endast anta värdena true och false Exempel: boolean parkering = false; Booleska variabler används ofta i villkor
Omslagsklasser (Wrapper classes) För varje primitiv datatyp finns en motsvarande klass, t ex Dessa klasser innehåller en del användbara metoder t ex för att omvandla från strängar till tal Datatyp int double char boolean Klass Integer Double Character Boolean
Variabler och konstanter Variabler kan tilldelas ett startvärde i deklarationen: double längd = 0.84; Variabelns värde kan ändras senare i programmet. Lägger man till ordet final får man en konstant, vars värde inte kan ändras: final double längd = 1.78;
Tilldelning 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 x y
Inläsning Användaren kan ge en variabel ett nytt värde om programmet läser in från tangentbordet: 1Se till att eventuella fel skickas vidare public static void main (String[] args) throws IOException { 2Tala om varifrån inläsningen ska ske BufferedReader stdin = new BufferedReader (new InputStreamReader (System.in)); 3Läs in raden raden = stdin.readLine();
Inläsning av tal Metoden readLine() läser in en sträng. Vid behov kan man omvandla strängen till ett tal heltal = Integer.parseInt(rad); Inläsning och omvandling kan göras i ett steg: heltal = Integer.parseInt(stdin.readLine()); Flyttal är lite krångligare: flyttal =(new Double( stdin. readLine ())).doubleValue(); men i nästa version av Java (1.2) kan man skriva flyttal= Double.parseDouble(stdin.readLine());
Matematiska operatorer blir blir 4.16 * 3.5 * 2 blir 7.0 / 19 / 4 blir 4 / 19 / 4.0 blir 4.75 % 19 % 4 blir 3 % ger resten vid heltalsdivision
if-satsen if-satsen används när ett villkor avgör vad som ska göras: if (ålder <11) System.out.println(”Barnförbjudet!”); Man kan lägga till else för att tal om vad som ska hända om villkoret inte är uppfyllt: if (ålder <11) System.out.println(”Barnförbjudet!”); else System.out.println(”Välkommen!”);
Jämförelseoperatorer I villkor kan följande operatorer användas: Strängar kan inte jämföras med operatorerna ovan (eftersom strängar inte är primitiva datatyper).
Villkor kan kombineras med följande tre operatorer: if (ålder = 21) System.out.println(”OK!”); Logiska operatorer
Slingor När man vill att vissa satser ska utföras flera gånger använder man en slinga. För att visa vilka satser som ska upprepas sätter man { } runt dessa. Man kan välja mellan att –ange ett villkor för hur länge satserna ska upprepas (while-slinga) –tala om hur många gånger satserna ska upprepas (for-slinga)
while-slingan Så länge som villkoret är uppfyllt utförs satserna: while (fortsätt == true) { /* Satser som upprepas */ } Om villkoret passar bättre sist skriver man: do { /* Satser som upprepas */} while (fortsätt == true);
Slingexempel - while // Beräknar tio tvåpotenser (s105 i boken) class Potens { public static void main(String[] args) { int varv=1, tvåpotens=1; while (varv <= 10) { tvåpotens=tvåpotens*2; System.out.println(tvåpotens); varv=varv+1; } //while } //main } //Potens
for-slingan Vet man hur många varv slingan ska gå runt kan man använda for istället: for (int i=0; i<2; i++) { System.out.println(”Varv ” + i); } Variabeln i ovan existerar bara inuti for- slingan
Slingexempel - for // Beräknar tio tvåpotenser (s105 i boken) class Potens { public static void main(String[] args) { int tvåpotens=1; for (int varv=1; varv <= 10; varv++) { tvåpotens=tvåpotens*2; System.out.println(tvåpotens); } //for } //main } //Potens