Ganzzahlige Datentypen
Ein Computer speichert die ganzen Zahlen in eine Folge von binären Zeichen, also 1 oder 0. Bei 1 Byte haben wir 8 Bits die uns zur Verfügung stehen, also 8 binäre Stellen. Das erste Bit benötigen wir für das Vorzeichen, uns bleiben also 7 Bits um eine Zahl darstellen zu können. Die negativen Zahlen sind durch die rechnerinternen Darstellungen um 1 größer, in diesen Fall -128. Mit 8 Bits sind also 127(positiv) + 128(negativ) + 1(Null) = 256 verschiedene Zahlen möglich darzustellen.
Der Datentyp byte ist genau 8 Bits groß. Im Allgemeinen ist dieser Zahlenbereich (-128 bis 127) viel zu klein um damit vernünftig arbeiten zu können. Deshalb gibt es in Java die weitere Arten von ganzzahligen Datentypen, die zwei, vier oder acht Byte lang sind.
Hier sind alle ganzzahligen Datentypen die es in Java gibt:
Für ganzzahlige Datentypen sind die Ziffern 0 bis 9 verfügbar. Der Compiler geht immer von einer 4 Byte großen Zahl aus, also int. Wenn man die Zahl 214783649 darstellen will muss man der Zahl ein L anhängen für den Datentyp long, also 214783649L. Ohne das L würde der Compiler einen Fehlermeldung ausgeben.
Hier zwei Beispiele:
Es ist aber auch möglich in Java oktale Zahlen (Zahlen im Achter-System) oder als hexadezimale Zahlen (Zahlen im Sechzehner-System) zu schreiben. Oktale Zahlen beginnen mit einer 0 und sind im Ziffernbereich von 0 bis 7. Hexadezimale Zahlen beginnen mit 0x, die Ziffer sind im Bereich 0 bis 9 und von A bis F.
Zwei Beispiele für Oktale und Hexadezimale Zahlen:
System.out.println ist das Selbe wie System.out.print nur mit einen Zeilenumbruch am Ende
Gleitkommatypen
In Java gibt es noch die Datentypen float und double für Gleitkommazahlen. Diese sind intern aus 32 Bits oder 64 Bits aufgebaut. Das Bitmuster ist aber etwas anders aufgebaut als der von den ganzzahligen Datentypen. Für die Gleitkommazahlen nimmt man einen Punkt (keine Komma sonst gibt der Compiler eine Fehlermeldung zurück). Es kann aber auch ein Exponent (bestehend aus einem e oder einem E sowie eine Endung von f, F, d oder D) verwendet werden. Das E steht für die anschließender Zahl X für die Multiplikation mit 10^X, d.h. die Zahl 1.2E3 steht für 1.5 * 10^3, also den Wert 1500. Bei negativen Zahlen wird vor die entsprechende Zahl ein Minuszeichen gesetzt. Bei den Wert 1500, die Zahl 1.5E-3 für 1.5 * 10^3 ergibt 0.0015. Der Compiler geht bei Gleitkommazahlen von den Typ double aus, man kann aber auch ein d oder D anhängen für den Wert double. Für float wird ein f oder F angehängt. Es muss dazu gesagt werden bei Gleitkommazahlen kann es zu Rundungsfehlern kommen.
Hier sind die Gleitkommazahlen die es in Java gibt:
Der Datentyp char für Zeichen
In Java gibt es den Datentyp char, manchmal ist es notwendig mit Zeichen oder Buchstaben zu arbeiten. Ein Zeichen übergibt man dem Typ char mit Hochkommata, das Zeichen c wird dann so 'c' dargestellt. Der Datentyp char wird mit 16 Bits (also 2 Bytes dargestellt). Jedes Zeichen hat eine bestimmte Nummer (16 Bit Dualzahl), der sogenannte Unicode, das c hat z.B. die Nummer 99. Den Wert char kann man auch als ganzzahligen Wert auffassen, z.B. mit int i = 'c' wird der Wert 99 zugewiesen.
Der Unicode-Zeichensatz enthält auch Zeichen die nicht mit der Tastatur dargestellt werden können. Um diese in Java anzuzeigen, gibt es die Unicode-Schreibweise die mit \u beginnt und vier hexadezimale Ziffern folgen. Damit ist es möglich alle Unicode-Zeichen von \u0000 bis \uffff darstellen. Der hexadezimale Wert 63 entspricht den dezimalen Wert 99. Für Kommando oder Trennzeichen gibt es auch die Escape-Sequenzen, damit kann man statt '\u0009' auch '\t' für den horizontalen Tabulator schreiben oder für den Zeilenvorschub '\n'. Die Symbole " und ' können nur in der Form '\"' und '\'' geschrieben werden. Das \-Zeichen kann nur in der Form '\\' geschrieben werden.
Zeichenketten
Der String besteht aus mehreren Zeichen des Datentyps char. Dei Zeichen abc können mit doppelten Hochkommata dargestellt werden "abc".
Der Datentyp boolen für richtig oder falsch
Es gibt auch noch den Datentyp boolean für Wahrheitswerte. Beim diesen Datentyp gibt es nur wahr(true) oder falsch(false).
Implizite Typumwandlungen
Kleine ganzzahlige Datentypen werden automatisch vom Compiler in den größeren Datentyp umgewandelt, wenn sie ihnen zugewiesen werden. Es können auch Gleitkommazahlen in ganzzahlige Datentypen umgewandelt werden, aber es können Rundungsfehler auftreten. Ein float-Wert wird auch automatisch in einen double-Wert umgewandelt, wenn er den größeren Datentyp zugewiesen wird. Es ist auch eine implizite Umwandlung von char nach int, long, float oder double möglich.
Explizite Typumwandlungen
Bei einer Typumwandlung eines größeren in einen kleineren Datentyp haben wir ein Problem. Der Compiler würde uns einen Fehler ausgeben, da es dabei zu Umwandlungsfehlern kommen kann. Um den Compiler mitzuteilen, dass es die Absicht des Programmierers ist, schreibt man dann z.B. (int) 12.56 mit dem (Datentyp in Klammer) gibt man dem Compiler an, dass das Umwandeln des nachfolgenden Bezeichners gewollt ist.
Beispiele zur expliziten Typenumwandlung:
Wenn man das Beispiel ausführt wird man bemerken dass zwei verschiedene Ergebnisse gibt. Das kommt von der Klammersetzung. In den beiden Kommentaren wird auch schon angedeutet warum es so ist. Am besten probiert man einfach Verschiedene Klammersetzungen aus um zu sehen was passiert und es auch besser verstehen kann.
Jetzt sind wir an das Ende des zweiten Tutorials angelangt. Hoffe ich konnte es verständlich erklären und dass sich kein Fehler eingeschlichen. Wenn jemand Verbesserungsvorschläge hat, kann er es mir ruhig schreiben. Ich bin schon am überlegen was dass nächste Thema ist.


Keine Kommentare:
Kommentar veröffentlichen