Lernpfad:Objektorientierte Programmierung mit Java/Datentypen und Variablen
Diese Seite ist auch erreichbar unter link.ngb.schule/java-datentypen
Primitive Datentypen
Primitive Datentypen sind fest in der Programmiersprache verankerte, elementare Datentypen, die Zahlen, einzelne Zeichen und logische Werte repräsentieren.
In dem Ausdruck primitiver Datentyp bedeutet das Wort primitiv "eine elementare Komponente, die verwendet wird, um andere, größere Teile" zu erstellen. → http://www.gailer-net.de/tutorials/java/Notes/chap08/ch08_4.html
Die primitiven Datentypen, ihr Speicherbedarf und ihr typischer Wertebereich findest du in der folgenden Tabelle.
Typname | Größe[1] | Wertebereich | Beschreibung | Beispiel |
---|---|---|---|---|
boolean |
undefiniert[2] | true / false | Wahrheitswert, Boolescher Typ | true
|
char |
16 bit | 0 ... 65.535 (z. B. 'A') | Unicode-Zeichen (UTF-16) | 'x'
|
byte |
8 bit | -128 ... 127 | Zweierkomplement-Wert | 4
|
short |
16 bit | -32.768 ... 32.767 | Zweierkomplement-Wert | 128
|
int |
32 bit | -2.147.483.648 ... 2.147.483.647 | Zweierkomplement-Wert | 256
|
long |
64 bit | -263 bis 263-1, ab Java 8 auch 0 bis 264 -1[3] | Zweierkomplement-Wert | 512L
|
float |
32 bit | +/-1,4E-45 ... +/-3,4E+38 | 32-bit IEEE 754, es wird empfohlen, diesen Wert nicht für Programme zu verwenden, die sehr genau rechnen müssen. | 1.34f
|
double |
64 bit | +/-4,9E-324 ... +/-1,7E+308 | 64-bit IEEE 754, doppelte Genauigkeit | 1.35
|
Die Tabelle ist eine angepasste Version der Tabelle von https://de.wikibooks.org/wiki/Java_Standard:_Primitive_Datentypen, welche unter der Lizenz Creative Commons Namensnennung – Weitergabe unter gleichen Bedingungen bereitgestellt wird.
Die Verwendung der einzelnen Datentypen inklusive Beispielen wird im Wikibook Java Standard vorgestellt.
- Ordne die Werte den passenden Datentypen zu.
int | 42 | 13 | 198 | 45 |
double | 4.3 | 5.1 | 7.9 | 901.2 |
float | 4.3f | 13.2f | ||
long | 30049L | 42L | 1703948L | |
boolean | true | false |
Nicht primitive Datentypen
Neben den primitiven Datentypen gibt es in Java noch andere Datentypen, die nicht fest in der Programmiersprache integriert sind - also nicht primitiv sind. Jede Klasse ist ein solcher Datentyp. Beim Erstellen von Variablen werden sie genauso verwendet wie die primitiven Typen. Allerdings haben sie einige Besonderheiten, die in den Schritten Objekte erstellen und Referenzen genauer vorgestellt werden.
Der am meisten verwendete nicht primitive Datentyp ist String
, also Texte beziehungsweise Zeichenketten.
Variablen
Variablen sind temporäre Speicher für Informationen eines Datentyps. In einem Algorithmus können Variablen benutzt werden, um Daten zur weiteren Verarbeitung vorzuhalten. Nachdem ein Datum einer Variablen zugewiesen wurde, kann in einem späteren Schritt des Algorithmus wieder darauf zugegriffen werden.
Deklarieren und initialisieren
Möchte man in Java eine Variable benutzen, muss diese zunächst deklariert werden. Deklarieren bedeutet dem Computer zu sagen, dass er im verfügbaren Speicher einen Bereich reservieren soll, der ausreichend Platz für Daten des deklarierten Typs bietet. Der benötigte Speicherplatz jedes primitiven Typs ist in der Tabelle oben aufgeführt.
Bei der Deklaration kann der Variablen auch direkt ein Wert zugewiesen werden. Die Variable wird also mit einem Wert initialisiert. Wird kein Initialwert explizit angegeben, dann reserviert Java auch keinen Speicherbereich für die Variable und die Variable hat keinen Wert (auch nicht null
). Außer in Spezialfällen sollte daher bei der Deklaration auch direkt ein Initialwert mit angegeben werden.
Die Syntax zur Deklaration von Variablen in Java ist einfach:
Java-Syntax | Beispiele |
---|---|
Datentyp Bezeichner;
|
int zahlVariable;
|
boolean wahrheit;
| |
double x;
| |
String einText;
| |
MyClass referenz;
| |
Datentyp Bezeichner = Initialwert;
|
int zahl = 5;
|
boolean wahrheit = true;
| |
String einText = "Hallo, Welt!";
|
- Wähle alle korrekten Variablen-Deklarationen aus.
(!int zahl = "45";) (int i = 0;) (int ichBinNull;) (!zahl = 5;)
(boolean wahrheit = true;) (!wahrheit = boolean;) (!boolean = false;) (boolean ichBinFalsch;)
(!name String = "Linus";) (!String = "Linus";) (String name;) (String name = "Linus";)
Gültigkeitsbereiche
Variablen in Java haben immer einen Gültigkeitsbereich, indem sie benutzt werden dürfen. Außerhalb dieses Bereichs produziert der Compiler einen Fehler, wenn die Variable benutzt wird. Der Gültigkeitsbereich reicht in der Regel ab der Deklaration der Variablen bis zum Ende des aktuellen Blocks. Blöcke in Java sind durch geschweifte Klammern gekennzeichnet ({}
).
int i = 0; // Deklaration von i, Beginn des Gültigkeitsbereichs
if( i == 0 ) {
boolean b = false; // Deklaration von b, Beginn des Gültigkeitsbereichs
i = i + 1; // i ist auch im Inneren des if-Blocks gültig
} // Ende des Gültigkeitsbereichs von b
i = 100; // i ist überall gültig
b = true; // Fehler! Gültigkeitsbereich von b verletzt
Casting von Datentypen
Casting ist die Überführung eines Datentyps in einen anderen (z.B. byte
zu int
). Dies kann implizit oder explizit geschehen. Implizit bedeutet, dass Java automatisch eine Überführung vornimmt. Explizit bedeutet, dass du die Überführung im Programmtext explizit einprogrammiert.
Bei einigen Datentypen ist das Casten einfach, zum Beispiel von short
zu int
, da beide Typen ganze Zahlen darstellen und alle Zahlen, die short
speichern kann, auch in int
enthalten sind. Bei anderen Typen ist die Überführung nicht so klar, wie zum Beispiel bei boolean
zu char
. Für jeden dieser Fälle ist in Java klar vorgesehen, wie die Überführung stattfindet.
Um explizit ein Casting durchzuführen, schreibst du den Zieldatentyp (in den überführt wird) in runden Klammern vor den Ausgangswert:
byte b = 42;
// implizites casting von byte nach int
int zahl = b;
// explizites casting von int nach short
short grosseZahl = (short) zahl;
// explizites casting von boolean nach byte
byte wahr = (byte) true;
Der Datentyp String
Zeichenketten haben in Java eine Sonderstellung. Texte werden durch doppelte Anführungszeichen gekennzeichnet:
String text = "Hallo, Welt!";
Diese Art einen Text zu erzeugen ist allerdings nur eine Kurzform für das Erstellen einer neuen Objektinstanz der Klasse String
. Obiger Quelltext ist dann gleichbedeutend mit
String text = new String("Hallo, Welt!");
Da eine Zeichenkette also ein Objekt ist, besitzt jedes Textobjekt auch Methoden, die auf ihm aufgerufen werden können. Folgende Zeilen sind unter anderem korrekter Javacode:
String text = new String("Hallo, Welt!");
text.toLowerCase(); // hallo, welt!
text.toUpperCase(); // HALLO, WELT!
Die komplette Übersicht der Methoden der Klasse String
kannst du in der Java API Dokumentation[1] nachlesen.
Klassen und Objekte | Compiler und Interpreter | BlueJ | Syntax und Semantik | Datentypen und Variablen | Objektvariablen | Methoden | Parameter und Rückgaben | Objekte erstellen | Der Konstruktor | Referenzen | Klassenmethoden | Klassen der Java-Bibliothek | Systematisch Fehler suchen | Arrays | Komplexe Arrays | Vererbung | Abstrakte Klassen | Interfaces | Generische Typen | Fehlerbehandlung