ACHTUNG: Eine blaue Schrift verweist OHNE LINK auf die zuständige Beschreibung durch die Dokumentation der Java API !!
Eine Variable besitzt einen Namen mit einem dazugehörenden Wert.
Beispiel:
anton = "blau"; // Die Variable mit den Namen anton besitzt den Wert
"blau"
anton = 4; // Die Variable mit den namen berta besitzt den Wert 4
Vereinbarungsgemäß werden allen Namen bis auf die Klassennamen
und Konstanten klein geschrieben und jeder Anfangsbuchstabe eines Wortes innerhalb
des Variablennamens groß:
Beispiel: dasIstEinVariablenNameDessenSatzManLesenKann.
Zur Organisation und Bestimmung der Grösse des Speichers benötigt der Computer Informationen über
die Art einer Variablen = typ. Er legt fest, ob der Wert im Speicher als Zahl,
Integer, Float, ..... oder als Zeichen interpretiert werden soll.
Zur Erinnerung: Ein Computer kennt genau 2 Zustände Ein oder Aus. Mehrere
Ein/Aus-Zustände können den ASCII-Zeichensatz wiedergeben. Dazu benötige
ich pro Information mehr Speicher, die vorher reserviert werden müssen.
Daher wird der Variable die angeforderte Speichergröße zugeordnet. Der
Typ einer Variablen wird vor dem ersten Auftreten im Namensraum festgelegt.
Dies geschieht durch Nennung des Typs vor seinem Namen:
Beispiel: Eine Variable mit dem Namen a, die Integerzahlen beinhaltet: int a.
Mögliche elementare Typen sind:
zur Erinnerung, falls jemand die Größe des Bereichs nachrechnen möchte:
1byte = 4bit = 2hoch4 = 2*2*2*2 = 256 Möglichkeiten!!
-> als Ganzzahlen, immer vorzeichenbehaftet:
-> als Gleitkommazahlen:
-> als Zeichen
Unicode: 2 byte = 256*256 = 65.536 mögliche Zeichen, Darstellung abhängig,
ob sie das Betriebssystem überhaupt darstellen kann.
Aufbau des Codes in Java: vor der Zahl: \u für Unicode
dann vier Hexadezimalstellen: von 0000 bis FFFF.
Beispiel: \u00A6
der ASCII-Code belegt die ersten 256 Stellen: 0000 bis 00FF.
wichtige Sonderzeichen:
| \b | \u0008 |
| \t | \u0009 |
| \n | \u000A |
| \r | \u000D |
| " | \u0022 |
| ' | \u0027 |
| \ | \u005C |
weiteres zum Thema Unicode siehe: www.unicode.org
-> als boolan:
In Java ist die Zahl 0 kein boolscher Wert!!: true und false sind echte Werte!!, keine Strings!!!
Standardtypen werden automatisch mit ihrem 0 Wert initialisiert:
Zusätzlich wird auch bestimmt, wo die Variablen gelten sollen. Sollen sie nur innerhalb einer Funktion gelten oder nur innerhalb einer Datei bzw. Klasse oder sonstwo. Die Definition, wo eine Variable gültig sein soll, wird Namensraum genannt. Da Variablen nur innerhalb Ihres Namensraumes gültig sein können, wird der Bereich in dem sie gültig sein dürfen vor der Angabe des Types bestimmt:
Variablen, die für einen Methodenaufruf als Platzhalter für die, während des Aufrufes übergebenen Werte fungieren, beginnen ihre Gültigkeit innerhalb der runden Klammern, die nach dem Namen der Funktion bei deren Definition stehen. Daher muss ihr Typ bei der Definition in der Funktionsdefinition der Parameter dabeistehen. Zusätzliche Optionen (private, static etc.) werden nicht dazuerklärt:
Beispiel: berechne(int a, int b)
Zusätzlich können noch folgende Optionen bei der Deklaration mitgegeben
werden:
Beispiel: Variable mit dem Namen a , vom Typ integer, die den Wert 10 zugewiesen
erhält: int a = 10
Diesen Vorgang nennt man Initialisieren einer Variablen.
Und da hier der Name der Variable, ihr Typ und der Gültigkeitsbereich
festgelegt wird, spricht man auch von Deklarieren einer Variable. Natürlich
erfolgt zuerst die Deklarierung (= ich sage dem Computer, dass er, wenn der Name
a genannt wird, dies eine Bezeichnung für eine Variable bedeutet, die 4 byte
Speicher erhält und deren Inhalt das Programm als Zahl zu interpretieren
hat) und dann die Initialisierung (Dieser Variablen wird der Wert 2 zugewiesen).
int a; int b; a = 3; b = 4; |
Variable sind nur innerhalb ihres Namensraumes, der durch zwei geschwungene
Klammern definiert wird gültig.
Beispiel: { privat int a; }
und in allen weiter hineinreichenden Blöcken. Somit ist gewährleistet, dass gleiche Variablennamen außerhalb eines anderen Namensraumes eindeutig definiert sind.
Mehrere innere Klassen verwenden eine äußere Klasse um auf gemeinsame Variablen zugreifen zu können.(Beispiel AWT, Swing)
Innerhalb einer Methode deklarierte Variablen sind immer lokale Variablen. Da sie nur innerhalb des Blockes gelten, wird ihr Gültigkeitsbereich nicht bezeichnet! Sie müssen immer initialisiert werden. Wird der Name auch außerhalb des Blockes verwendet (was fast einer doppelten Deklaration gleichkäme!!), entsteht eine verdeckte Variable.
Achtung: In Java ist es nicht möglich die Typen der Werte und Variablen
zu mischen! Dazu müssen Sie entsprechend umgewandelt (= gecastet) werden.
Die Umwandlung kann automatisch (nur von links nach rechts, aufsteigend: byte->short->int->long->float->double
oder char->int) oder muss manuell erfolgen. Eine Typenumwandlung ändert
nur die Menge der zugeteilten Speicherplätze und wie das Programm den Speicherinhalt
interpretieren soll, ohne Rücksicht auf den bestehenden Inhalt:
Beispiel:
float y = 3.14
int x = (int)y;
x besitzt den Wert 3
Ein Byte wird normal als 0I00.0000 dargestellt. Java verwendet daher integer Zahlen mit 256 möglichen Werten(positiv und negativ!!): Damit wird eine Byte Berechnung folgendermaßen durchgeführt:
// Addition erfolgt erst ab int !
public class ByteAddition {
public static void main(String[] args) {
byte a = 127;
byte b = 1;
int ergebnis;
// Damit wir ein byte Ergebnis erhalten, casten
// Achtung: Ergebnis verhält sich wie ergebnis%byteWertebereich (!)
ergebnis = (byte) (a + b);
System.out.println(ergebnis);
}
} |
Direkte Umwandlung, Vergleiche und Anwendung sonstiger Operatoren ist nur zwischen
den Elementartypen in der Reihenfolge, wie oben mit Hilfe der zugehörenden
Wrapperklassen beschrieben möglich. Innerhalb der Zahlentypen werden bei
Berechnungen die Ergebnisse auf den höheren Typ automatisch umgewandelt.
Beispiel: int * float = float; 2 * 3.5 = 7.0