6 Variablen und Datentypen

Werbung
6
Variablen und Datentypen
Die Programme, die wir bisher gesehen haben, sind ziemlich langweilig — sie
arbeiten eine vorgegebene Folge von Befehlen ab und sind überhaupt nicht flexibel. Für flexible Programme, die bei jedem Aufruf etwas anderes tun, benötigt
man Variablen“, etwas das bei jedem Programmablauf einen anderen Wert
”
haben kann.
6.1
Variablen und ihr Typ
Wir verwenden Variablen, wenn wir Objekten einen Namen geben wollen, oder
wenn wir uns etwas merken möchten. Variablen sind Platzhalter für Zahlen,
Zeichenketten, Turtles oder sonstirgendwelche Dinge. Auf der Hardwareebene
entspricht jeder Variable ein gewisser Platz im Hauptspeicher des Computers.
Jede Variable hat einen Namen, und dieser Name muß den Vorschriften für
Bezeichner genügen.
Beispiel: Angenommen, wir wollen in einem Programm einen Bruttopreis berechnen. Wenn wird dies für einen Preis von 10, − DM tun wollen,
könnten wir den Bruttopreis als
15% · 10, − + 10, −
berechnen.
Der Nachteil der obigen Formel ist, daß sie nur für einen Nettopreis von
10,- DM korrekt ist. Wenn wir in unserem Programm auch mit anderen
Preisen als 10,- DM rechnen wollen, würden wir daher lieber einen Platzhalter — eine Variable — für den Nettopreis verwenden. Möglicherweise
würden wir schreiben:
bruttopreis = 0.15 * nettopreis + nettopreis
Diese Formel wäre für jeden Preis anwendbar. Dazu müsste der Platzhalter
nettopreis den jeweils zu verwendenden Nettopreis enthalten. Das Ergebnis würden wir dann in einem anderen Platzhalter namens bruttopreis
speichern.
Wir können Variablen überall dort einsetzen, wo wir Werte hinschreiben würden.
Natürlich müssen wir dabei ein bißchen aufpassen — es wäre sicher nicht sinnvoll, einen Platzhalter, der eine reelle Zahl enthält, an einer Stelle zu verwenden,
an der nur Zeichenketten hinpassen.
Damit man nicht ausversehen eine Variable an einer Stelle verwendet, wo sie
keinen Sinn macht, hat in Java jede Variable einen Typ.
Beispiel: Beispielsweise gibt es in Java den Datentyp int. Variablen
dieses Typs können ganze Zahlen speichern.
Variablen des Datentyps double Typs können reelle Zahlen speichern.
Wenn Sie eine Variable des Typs double an einer Stelle verwenden, wo
man nur ganze Zahlen verwenden darf, zeigt der Compiler bei der Übersetzung ihres Programms einen Fehler an.
35
Bevor eine Variable in Java das erste Mal verwendet wird, muß man Java daher
Informationen darüber zukommen lassen, welchen Typ diese Variable haben soll.
In Java geschieht dies, indem man eine Anweisung des Aufbaus
TYP variablenname;
verwendet. Sobald Java eine solche Anweisung gefunden wird, merkt sich Java:
Aha, hier ist jetzt eine Variable namens variablenname definiert worden, und
diese Variable darf nur Werte des Typs TYP aufnehmen.
Beispiel:
DemoVars.javaa
1
2
3
4
5
6
7
8
9
10
11
12
/* Demonstriert einfache Variablenverwendung */
class DemoVars {
public static void main(String[] args) {
int zaehler;
zaehler = 10;
double inversZaehler = 1.0 / zaehler;
System.out.println("Zaehler = " + zaehler);
System.out.println("inversZaehler = " + inversZaehler);
}
}
a Siehe http://www.wire.tu-bs.de/lehre/eipclasses/KapVariablen/DemoVars.java
In Zeile 6 wird eine Variable namens zaehler als int definiert. Von dieser
Zeile an weiß Java, daß der Bezeichner zaehler für eine Variable steht
und nur ganze Zahlen speichern kann.
In Zeile 7 wird der Variable zaehler der Wert 10 zugewiesen. Vorher hatte
zaehler keinen definierten Wert.
In Zeile 8 wird eine weitere Variable namens inversZaehler definiert, die
reelle Zahlen speichern kann. Außerdem wird dieser Variable gleich der
inverse Wert von zaehler zugewiesen.
In Zeile 9 und 10 werden beide Variablen ausgegeben.
6.1.1
Ganze Zahlen
Java kennt mehrere ganzzahlige und mehrere reellwertige Datentypen. Der Grund
hierfür ist folgender: Jede Variable belegt einen gewisse Anzahl von Bytes im
Speicher des Computers. Aus Kapitel 2 wissen Sie, daß man mit n Bytes nur
28·n verschiedene Werte darstellen kann.
Um den Typ einer Variable festzulegen, muß man sich darum vorher Gedanken
machen, wieviele verschiedene Werte sie annehmen können soll und davon ausgehend, wieviele Bytes man im Computerspeicher dafür verwenden möchte. Da
man normalerweise nicht mehr Speicherplatz als nötig verschwenden will, bietet Java ganzzahlige und reellwerige Datentypen verschiedener Längen an (die
Länge des Datentyps gibt an, wieviele Bytes seine Variablen belegen).
Java kennt die ganzzahligen Datentypen byte, short, int und long. Am häufigsten verwendet man den Datentyp int.
36
Typ
byte
short
int
long
Länge
1
2
4
8
Wertebereich
−27 , . . . , 27 − 1
−215 , . . . , 215 − 1
−231 , . . . , 231 − 1
−263 , . . . , 263 − 1
Das folgende Programm demonstriert die Verwendung von ganzen Zahlen:
GanzZahl.javaa
1
2
3
4
5
6
7
8
public class GanzZahl {
public static void main(String[] args) {
short senseOfLife=42;
long secondsInYear=365*24*60*60;
byte secondsInMinute=60;
int
secondsInHour=secondsInMinute*secondsInMinute;
}
}
a Siehe http://www.wire.tu-bs.de/lehre/eipclasses/KapVariablen/GanzZahl.java
Was passiert, wenn eine Variable einen zu großen oder kleinen Wert enthält ?
Um das zu demonstrieren, haben wir ein Programm geschrieben, das eine Zahl
vom Benutzer einliest und anschließend ausgibt:
GanzZahlInput.javaa
1
2
3
4
5
6
7
8
9
import eip.*;
public class GanzZahlInput {
public static void main( String[] args ) {
Std.out.print("Bitte Zahl eingeben: ");
int i = Std.in.readInt();
Std.out.println("i="+i);
}
}
a Siehe http://www.wire.tu-bs.de/lehre/eipclasses/KapVariablen/GanzZahlInput.java
Wenn Sie das Programm kompilieren und starten, werden Sie aufgefordert, eine
Zahl einzugeben. Die eingegebene Zahl wird dann der int–Variable i zugewiesen.
Probieren Sie es bitte selbst aus ! Wenn Sie die Zahl 231 − 1 eingeben (das
ist die Zahl 2147483647), gibt das Programm sie korrekt wieder aus. Wenn Sie
jedoch größere Zahlen eingeben, kommt es zu komischen Resultaten: statt der
von Ihnen eingegebenen Zahl werden negative Zahlen ausgegeben. Zum Beispiel
macht das Programm bei mir aus der Zahl 123456789012 die Zahl −1097262572.
Diesen Effekt nennt man Overflow — eine Zahl läuft über, wenn man ihr
einen zu großen oder einen zu kleinen Wert zuweist. Der Wert, den die Zahl
dann enthält, ist nicht brauchbar.
Sie müssen also immer darauf achten, daß der ausgewählte Datentyp zu den
Daten passt, die Sie verarbeiten wollen.
37
Herunterladen