| » Tutorial / Java Grundlagen / Datentypen |
|
Im vorliegenden Kapitel dreht sich alles rund um die Datentypen von Java. Ein Datentyp definiert die Art der möglichen Inhalte einer Variable, legt deren Wertebereich und Verwendung fest. Java kennt mehrere verschiedene Datentypen wie Strings, sowie diverse Integer und Gleitkommatypen. Natürlich zählen auch benutzerdefinierte Klassen und Konstanten in diese Kategorie. Datentypen und Variablen bilden zusammen eine feste Einheit, wobei das nächste Kapitel sich ausgiebig mit dem Thema der Variablen widmet. |
|
» elementare Datentypen » benutzerdefinierte Datentypen » Konvertierung |
| » elementare Datentypen | nach oben « | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Java stellt dem Programmierer acht sogenannte elementare oder primitive Datentypen zur Verfügung. Sie bilden in diesem Sinne die kleinste Einheit, wenn es darum geht, eine Variable zu typisieren. Der Typ gibt dabei die Art der zu speichernden Daten an. Alle elementaren Datentypen haben in Java eine feste Größe und einen exakt vorgeschriebenen Wertebereich. Diese Angaben sind auf allen Systemen exakt die gleichen, wobei sich eine bessere Portabilität und Stabilität ergibt. Des weiteren lassen sich die diversen Datentypen kategorisch einteilen. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
» boolesche Datentypen » Integer » Fließkommazahlen » Zeichen |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
» boolesche Datentypen Es gibt einen booleschen Datentyp, welcher nur zwei Zustände kennt. Wahr oder falsch. Als feste Werte dienen dabei die Zustände True und False, welche als einzige mögliche Werte zuweisbar sind. Zahlen wie null oder eins sind in Java nicht mehr als Kriterium für boolesche Auswertungen zulässig.
» Integer Bei Integern handelt es sich um Zahlenwerte ohne jegliche Kommastellen. Java stellt Ihnen insgesamt vier Integertypen zur Verfügung, alle mit einem unterschiedlichen Wertebereich.
» Fließkommazahlen Als Integerwerte mit Nachkommastellen kennt Java ebenfalls zwei Typen. Beide verwenden einen unterschiedlich großen Wertebereich.
» Zeichen Auch für die gängigen Zeichen stellt Java einen entsprechenden Datentyp vor. Im Gegensatz zu anderen Programmiersprachen ist hier allerdings eine Besonderheit zu entdecken. Der gesamte Java - Zeichensatz basiert bereits auf dem Unicode - Standard, welcher mit der doppelten Byteanzahl alle Zeichentypen der Welt darstellen kann.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| » benutzerdefinierte Datentypen | nach oben « |
|
Es gibt mehrere Möglichkeiten, auch eigene Datentypen zu definieren. Diese können jedoch nie den atomaren Status wie die primitiven Datentypen erreichen. Eigene Datentypen werden in Form von Klassen aufgebaut, welche wiederum die elementaren Datentypen von Java verwenden. Kapitel zehn wird sich ausgiebig diesem Thema widmen. |
|
| » Konvertierung | nach oben « |
|
Das Ende dieses Kapitels widmet sich der Konvertierung der verschiedenen Datentypen untereinander. Dieser Aspekt ist in so fern wichtig, als dass oft Werte in eine andere Darstellungsweise umzurechnen sind. Aus Gründen der Vollständigkeit wird dieses Thema bereits hier besprochen, im nächsten Kapitel jedoch noch einmal praktisch aufgegriffen. Das Konzept der Konvertierung ist von globalem Sprachinteresse. Auch in späteren Kapiteln wird dieser Teil der Sprachspezifikation erneut aufgegriffen, und zum aktuellen Thema passend, weiter vertieft werden. |
|
|
» Standardkonvertierung » explizites Casting |
|
|
» Standardkonvertierung Java ist in der Lage, bereits beim Kompilieren die verschiedenen elementaren Datentypen unter Berücksichtigung ihrer Wertebereiche in einander umzuwandeln. Dabei folgt Java einem festen Schema, um Über- und Unterläufe zu vermeiden. Eine Konvertierung ist daher implizit nur von einem Datentyp kleineren Wertebereichs in einen Typ höheren Wertebereichs möglich, da ansonsten bei zu großen Werten signifikante Stellen verloren gehen würden. Die folgende Graphik verdeutlicht diese Hierarchie.
Es ist erkennbar, dass sich nicht alle Datentypen einreihen. Boolesche Datentypen zum Beispiel lassen sich nicht in einen Wert übertragen. Der umgekehrte Weg der Konvertierung wird von Java bereits als Fehler erkannt und daher nicht implizit durchgeführt. Java wählt immer den nächsthöheren Datentyp. Letztlich ist die Frage zu klären, wann die eigentliche Konvertierung überhaupt durchgeführt wird. Die Antwort beschränkt sich in der Regel auf die folgenden drei Fälle.
Möchte man dennoch die Konvertierung erzwingen, so muss dies über einen expliziten Cast erfolgen. » explizites Casting Auch für die explizite Konvertierung des Programmierers gibt es drei Gründe, in der sie definitif erforderlich ist.
Syntaktisch wird eine explizite Konvertierung durchgeführt, indem der neue Datentyp in Klammern dem entsprechenden Datentyp vorangestellt wird. |
|
| Syntax | |
(Typ) Variable;
|
|
|
Das folgende Bespiel demonstriert die explizite Konvertierung einer Ganzzahl in einen Zeichentyp. Zu beachten ist die entsprechende Verwendung des Konvertierungsoperators. |
|
| Quellcode | |
public class MyClass
{
public static void main(String[] args)
{
int i = 33; System.out.println(i);
char c = (char)i; System.out.println(c);
}
}
|
|
| Ausgabe | |
33
!
|
|
| « Kapitel | Kapitelübersicht | nach oben | Kapitel » |