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:
byte
short
int
long
float
double
boolean
char
Heltal
• Det finns fyra olika heltalstyper:
Namn
Storlek
Min-värde
Max-värde
byte
short
int
long
8 bitar
16 bitar
32 bitar
64 bitar
-128
-32,768
-2,147,483,648
< -9 x 1018
127
32,767
2,147,483,647
> 9 x 1018
Flyttal
• Det finns två flyttalstyper:
Namn
Storlek
Min-värde
Max-värde
float
double
32 bitar
64 bitar
-3.4 x 1038
-1.7 x 10308
3.4 x 1038
1.7 x 10308
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 www.unicode.org
• 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
Datatyp
Klass
int
double
char
boolean
Integer
Double
Character
Boolean
• Dessa klasser innehåller en del användbara
metoder t ex för att omvandla från strängar
till tal
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;
x
y
• I tilldelningssatsens vänsterled står en
variabel
• Högerledet kan vara ett värde, en variabel
eller ett uttryck
Inläsning
Användaren kan ge en variabel ett nytt värde om
programmet läser in från tangentbordet:
1 Se till att eventuella fel skickas vidare
public static void main (String[] args)
throws IOException {
2 Tala om varifrån inläsningen ska ske
BufferedReader stdin = new BufferedReader
(new InputStreamReader (System.in));
3 Lä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
+
*
/
/
%
2.52 + 19 blir 21.52
4.18 - 0.02 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:
==
!=
<
<=
>
>=
lika med
skilt från
mindre än
mindre än/lika med
större än
större än/lika med
• Strängar kan inte jämföras med operatorerna
ovan (eftersom strängar inte är primitiva
datatyper) .
Logiska operatorer
• Villkor kan kombineras med följande tre
operatorer:
&&
||
!
och
eller
icke
a<5 && b<5
a<5 || b<5
!(a<5)
• if (ålder <= 4 || ålder >= 21)
System.out.println(”OK!”);
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 forslingan
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