Nutzung von Variablen

Werbung
Nutzung von Variablen
Name
1
AnPr
Klasse
Datum
Allgemein
Wie der Name „Datenverarbeitung“ schon verrät, dienen Rechner dazu Daten zu speichern, zu ändern und
wieder auszugeben. Programme bilden den Algorithmus ab, wie die Daten zu verändern sind. Die Frage ist
nun, wie speichert man die Daten im Rahmen der Programme in den Rechnern ab?
Grundsätzlich wissen wir zwar alle, dass dies irgendwo im Speicher (RAM) des Computers erfolgt, doch
hierbei gibt es einiges zu beachten:




Wo werden im Speicher die Daten abgelegt – also unter welcher Adresse?
Wie kommen wir an die Daten wieder ran, um sie bspw. auszugeben?
Wie gehen wir mit der Tatsache um, dass zum Zeitpunkt des Schreibens des Programms die Speicherbelegung anders sein wird, als zum Zeitpunkt der Programmausführung und wir somit vorher
nicht wissen, wo die Daten zur Laufzeit abgelegt werden?
Wie teilen wir dem Rechner mit, wie viel Platz er für unsere Daten vorsehen muss?
Realisiert wird dies durch die Einführung von Variablen. Diese sollen all die oben genannten Probleme lösen, indem sie als eine Art Behälter für Daten fungieren. Hierbei sind diverse Eigenschaften vonnöten:
Variablen…:
haben…
haben…
haben…
haben…
Variablen sind Platzhalter für Daten im Speicher.
Um nun mit Variablen arbeiten zu können, müssen nun einige Voraussetzungen erfüllt sein:




Der Programmierer muss der Variablen einen Namen geben, um Daten in der Variablen speichern,
ändern oder Daten auslesen zu können.
Der Programmierer muss dem Computer mitteilen, wie viel Platz die Daten benötigen, welche in der
Variablen abgespeichert werden sollen – also der Datentyp der Variablen.
Der Programmierer muss eine Logik vorsehen, wie die Daten in die Variable abgelegt werden sollen
– also die Zuweisung von Werten.
Der Computer muss in der Lage sein, der Variablen im Speicher einen Platz zuzuweisen und den
Namen der Variablen fest mit dem Platz zu verknüpfen – also das Speichermanagement.
Im Folgenden werden die einzelnen Zusammenhänge näher erläutert, so dass man in der Lage ist, die Variablen zu nutzen und eventuelle Probleme vorher zu erkennen.
ANPR_04_Variablen_v01.docx
Seite 1
Nutzung von Variablen
2
AnPr
Deklaration und Datentypen
Das Festlegen des Namens und des Datentyps nennt man Deklaration der Variablen.
Üblicherweise wird gleich bei der Deklaration ein initialer Wert festgelegt, man spricht hier von der Initialisierung.
2.1 Syntax Deklaration
Der Syntax sieht wie folgt aus:
int:
iVar:
3:
Datentyp
Variablenname
Variablenwert
Bei der Deklaration können zwei verschiedene Grundtypen unterschieden werden, Variablen und Konstanten. Variablen können ihren Wert zur Laufzeit ändern, der Wert von Konstanten wird bei der Kompilierung
festgelegt.
Eine Konstante wird wie folgt deklariert:
final int I_VAR = 3;
Das Schlüsselwort „final“ zeigt dem Compiler an, dass sich der Wert der Variable nicht mehr ändert. Um
den Code einfacher lesbar zu machen, werden Konstanten üblicherweise nur mit Großbuchstaben benannt.
Bei der Festlegung der Datentypen müssen zuerst zwei Grundtypen unterschieden werden. Einfache Datentypen bestehen „lediglich“ aus einem einzigen Wert, der im Speicher zusammenhängend abgelegt wird. Zusammengesetzte Datentypen sind wiederum aus mehreren einfachen Datentypen zusammengesetzt und werden in Java als Klassen realisiert. Der bekannteste Vertreter von zusammengesetzten Datentypen ist die
String Variable – also eine Zeichenkette.
2.2 Übersicht Datentypen
Im Folgenden die wichtigsten Datentypen in Java:
Inhaltstyp:
Wahrheitswert
Ganze Zahl
Beispiel: Datentyp: Wertebereich:
true
Speicherbedarf:
true/false
8 bit
-128 bis 127
8 bit
-32.768 bis 32.767
16 bit
-2.147.483.648 bis 2.147.483.647
32 bit
4
-9.223.372.036.854.775.808L 9.223.372.036.854.775.807L
+/-1,4E-45 bis +/-3,4E+38
(7 signifikante Stellen)
+/-4,9E-324 bis +/-1,7E+308
(15 signifikante Stellen)
64 bit
32 bit
Gleitkommazahl
4.0
Zeichen
'4'
0 bis 65.535 (z. B. 'A')
16 bit
Zeichenkette
"4"
beliebig
variabel
Seite 2
64 bit
AnPr
Nutzung von Variablen
Obwohl es auch Programmiersprachen gibt, bei denen unbestimmte Datentypen existieren (bspw. Variant in
Visual Basic) wird immer empfohlen, die „passenden“ Datentypen für seine Programme zu verwenden – das
spart im Zweifelsfall Speicherplatz. In Java wird jedoch für ganze Zahlen immer int verwendet, es sein denn
es werden extrem viele Daten abgelegt, bei denen dies zu Speicherproblemen führen würde.
2.3 Wrapper-Klassen
Zu jedem einfachen Datentyp gehört in Java auch eine sogenannte Wrapper-Klasse, welche Hilfsfunktionen
für die einzelnen Datentypen aufweist. Die wichtigste ist das parsen von Strings inklusive Umwandlung des
gefundenen Wertes in den einfachen Datentyps:
String sStringWert = "123";
int iIntWert = Integer.parseInt(sStringWert);
// iIntWert hat nun den Wert 123 als Integerzahl
Im obigen Beispiel wird in eine Stringvariable der String "123" geschrieben. Dies ist aus Datensicht keine
Zahl, sondern eine Zeichenkette. Die Methode "parseInt" prüft nun, ob in der Variable in Klammern eine
Zeichenkette vorhanden ist, welche sich in eine Integerzahl umwandeln lässt. Wenn ja, dann gibt die Methode die Zahl zurück, wenn nein, wird ein Fehler erzeugt und das Programm unterbrochen. Hier die wichtigsten Wrapperklassen mitsamt oft genutzten Methoden:
Datentyp: Wrapper- Methode:
Klasse:
int
Integer
parseInt(str)
double
Double
char
boolean
Character
Boolean
Bedeutung:
Der String str wird nach einer Integer Zeichenkette geparst und
als int Datentwert zurückgegeben.
decode(str)
Dekodiert einen String, der als Hexwert (0x, 0X oder # mit
folgender Hexzahl) oder Oktalwert (0 mit folgender Oktalzahl)
in eine Dezimalzahl.
toHexString(i)
Der Dezimalwert i wird in eine Hexadezimalzahl in Stringrepräsentation gewandelt.
toOctalString(i)
Der Dezimalwert i wird in eine Oktalzahl in Stringrepräsentation gewandelt.
toBinaryString(i) Der Dezimalwert i wird in eine Binärzahl in Stringrepräsentation gewandelt.
toString(i)
Der Dezimalwert i wird in einen String umgewandelt.
parseDouble(str) Der String str wird nach einer Integer Zeichenkette geparst und
als double Datentwert zurückgegeben.
toHexString(d)
Der Dezimalwert d wird in eine Hexadezimalzahl in Stringrepräsentation gewandelt.
toString(d)
Der Dezimalwert d wird in einen String umgewandelt.
toString(c)
Der Charwert c wird in einen String umgewandelt.
getBoolean(str)
Der String str wird nach einem true/false geprüft und der logische Wert true/false wird zurückgegeben.
toString(b)
Der boolean Wert wird in einen String umgewandelt.
Alle anderen einfachen Datentypen haben ebenfalls Wrapper-Klassen. Da sie seltener verwendet werden
wird an dieser Stelle lediglich auf die Java Dokumentation verwiesen:
http://docs.oracle.com/javase/7/docs/api/java/lang/package-tree.html
Seite 3
Nutzung von Variablen
AnPr
2.4 Typecast
Neben den oben genannten Möglichkeiten Datentypen in Strings und umgekehrt zu verwandeln, gibt es noch
die Typecats. Hierbei wird ohne eine Methode aufzurufen der Datentyp direkt umgewandelt. Hier unterscheiden wir zwischen:


Explizite Typecasts
Implizite Typecasts
Explizit bedeutet, dass dem Rechner direkt mitgeteilt wird, dass von einem Datentyp A in einen Datentyp B
umgewandelt werden soll. Dies ist bei allen numerischen Datentypen immer möglich – wenn jedoch Datenverlust droht (also großer Datentyp nach kleiner umgewandelt), dann muss er explizit erfolgen. Ein Expliziter Typecast sieht wie folgt aus:
Zielvariable = (Zieldatentyp) Quellvariable
Hier ein Beispiel eines expliziten Typecasts von double zu int:
iIntVariable = (int) dDoubleVariable;
Imlizit bedeutet, dass der Zieldatentyp nicht angegeben werden muss – dies ist nur dann möglich, wenn kein
Datentypverlust droht (also kleiner Datentyp nach großem Datentyp):
dDoubleVariable = iIntVariable;
In der folgenden Tabelle sind in der ersten Spalte der Zieldatentyp und in der unteren Zeile die Quelldatentypen. Explizite Typecasts sind mit „E“, implizite mit „I“ gekennzeichnet:
=
short
=
int
=
long
=
float
=
double
=
Seite 4
double
float
long
int
short
=
byte
char
char
byte
AnPr
Nutzung von Variablen
2.5 Datentypen von Operationen
Neben den Typecasts gibt es noch eine weitere Situation, in der implizit Typen gewandelt werden. Werden
bspw. zwei Zahlen eines Datentyps addiert, so ist das Ergebnis immer vom gleichen Datentyp, wie die beiden Ausgangsdatentypen. Sind es zwei verschiedene Datentypen, so muss sich der Computer für den Ergebnisdatentyp entscheiden.
Folgende Regel gilt:
Bei der Verknüpfung von zwei Datentypen ist das Ergebnis immer vom Typ des größeren Datentyps.
Beispiel:
int iVar = 2;
byte byVar = 4;
Die Rechnung iVar * byVar = ergibt den Datentyp: ……………..
int iVar1 = 2;
byte iVar2 = 4;
Die Rechnung iVar1 * iVar2 = ergibt den Datentyp: ……………..
Was ergibt somit 2/4: ……………………
2.6 Namenskonventionen
Welcher Code ist einfache lesbar:
Code1:
int a = 3;
double b = 10.5;
double c = a * b;
Code2:
int iAnzahl = 3;
double dEinzelGewicht = 10.5;
double dGesamtGewicht = iAnzahl * dEinzelGewicht;
Variablennamen sollen folgende Eigenschaften aufweisen:
Datentyp:
byte
short
int
long
boolean
Präfix:
by
s
i
l
b
Beispiel:
byIdWert
sAnzahl
iAnzahl
lAnzahl
bFehleingabe
Datentyp:
float
double
char
String
Präfix:
f
d
c
s
Beispiel:
fBetrag
dBetrag
cKennung
sEingabe
Seite 5
Nutzung von Variablen
3
AnPr
Lizenz
Diese(s) Werk bzw. Inhalt von Maik Aicher (www.codeconcert.de) steht unter einer
Creative Commons Namensnennung - Nicht-kommerziell - Weitergabe unter gleichen Bedingungen 3.0 Unported Lizenz.
Seite 6
Herunterladen