Einstieg in die Informatik mit Java Datentypen

Gerd Bohlender Institut fur ¨ Angewandte und Numerische Mathematik

1 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

2 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

3 / 30

¨ Uberblick

In diesem Kapitel werden Datentypen und Literalkonstanten beschrieben.

Datentypen Vorgegebene oder selbst definierte Mengen von Werten, z.B. ganze Zahlen, Zeichen, Zeichenketten

Literalkonstanten Darstellung dieser Werte im Programmtext

4 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

5 / 30

Ganzzahlige Typen Die Darstellung und Genauigkeit der vordefinierten Datentypen ist in Java genau festgelegt. Typ byte short int long

Speicherbedarf 8 bit 16 bit 32 bit 64 bit

Wertebereich von -128 bis 127 von -32768 bis 32767 von -2.147.483.648 bis 2.147.483.647 von -9.223.372.036.854.775.808 bis 9.223.372.036.854.775.807

Achtung Der Datentyp char dient zur Speicherung von Zeichen (siehe ¨ ebenfalls zu den ganzzahligen Typen! unten). char zahlt

6 / 30

Ganzzahlige Konstanten, Stellenwertsystem

Naturliche Zahlen werden ublicherweise dezimal (zur Basis 10) ¨ ¨ dargestellt, z.B. 123 = 1 · 102 + 2 · 101 + 3 · 100 ¨ Alternativ konnen Zahlen auch zu einer Basis b ≥ 2 dargestellt werden: xn xn−1 . . . x2 x1 x0 = xn ·bn +xn−1 ·bn−1 +. . .+x2 ·b2 +x1 ·b1 +x0 ·b0 Hierbei sind xi Ziffern zur Basis b, im Bereich 0, 1, . . . b − 1. In der Informatik ist die Verwendung der Basen 2, 8, 16 weit verbreitet.

7 / 30

Ganzzahlige Konstanten

In Java durfen ganzzahlige Konstanten zur Basis 10 (dezimal), ¨ 8 (oktal) oder 16 (hexadezimal) dargestellt werden. Darstellung dezimal oktal hexadezimal

Beschreibung Ziffernfolge, die nicht mit 0 beginnt. 0 gefolgt von oktaler Ziffernfolge (0 . . . 7). 0x gefolgt von hexadezimaler Ziffernfolge (0 . . . 9, a, . . . f, A,. . . , F).

¨ Bei hexadezimaler Darstellung werden zusatzliche Ziffern a = A = 10, b = B = 11, ... f = F = 15 ¨ benotigt.

8 / 30

Ganzzahlige Konstanten – Beispiele Beispiel Darstellung der Zahl Zehn: 10 = 1 · 101 + 0 · 100 = 10dez , 012 = 1 · 81 + 2 · 80 = 10dez , 0xa = 10 · 160 = 10dez . Die Suffixe l, L sorgen fur ¨ eine Umwandlung in eine Konstante vom Datentyp long (Speicherbedarf 64 Bit).

Beispiel: Vorsicht, Verwechslungsgefahr! 123456789012345 = Fehler 123456789012345L = 123456789012345 123L = 123(im 64 Bit Format) 123l = 123(!) 1231 = 1231(!) 9 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

10 / 30

Gleitkommatypen ¨ Floating point numbers heißen in ihrer deutschen Ubersetzung Gleitkommazahlen und sind nach dem IEEE–Standard 754 implementiert. Typ float double

Speicherbedarf Genauigkeit (ca.) 32 bit 7-8 Stellen 64 bit 15-16 Stellen

¨ Großter Wert (ca.) Kleinster Wert (ca.) 3.4028234663852886E+038 1.4012984643248171E-045 1.7976931348623157E+308 4.9406564584124654E-324

Achtung ¨ Obwohl dieser Datentyp in der deutschen Ubersetzung das ¨ werden die Nachkommastellen von Wort Komma enthalt, Gleitkommazahlen in Java trotzdem mit einem Punkt getrennt! 11 / 30

Gleitkommakonstanten Eine Gleitkommazahl besteht aus: • Mantisse (Ziffernfolge, ggfs. Dezimalpunkt) • Exponentenangabe (e bzw. E, ggfs. Vorzeichen)

Achtung Die Buchstaben e, E bedeuten Exponentieren zur Basis 10.

Beispiele 1.23 bedeutet 1, 23 1e6 bedeutet 106 , also 1000000, 0 1E-3 bedeutet 10−3 , also 0, 001 12.34e5 bedeutet 12, 34 · 105 , also 1234000,0 12.34e-2 bedeutet 12, 34 · 10−2 , also 0,1234 .1 bedeutet 0, 1 1. bedeutet 1, 0 .12e-3 bedeutet 0, 12 · 10−3 = 0, 00012 12 / 30

Gleitkommatypen – spezielle Werte

Die Suffixe f, F legen eine Konstante vom Typ float an, die Suffixe d, D entsprechend eine Konstante vom Typ double, z. Bsp. 1.2f, 1.2d. Ohne Suffix ist die Konstante vom Typ double. ¨ ein, so wird mit ± Infinity weitergerechnet! Tritt Uberlauf“ ” Bei einem mathematisch sinnlosen Ergebnis (z. Bsp. 0/0, ∞ − ∞, 0 ∗ ∞) wird NaN ( Not a Number“) als Ergebnis ” eingesetzt. Damit kann das Programm formal fortgesetzt werden.

13 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

14 / 30

Zeichen, Datentyp char

¨ Zeichen zahlen in Java ebenfalls zu den numerischen Datentypen! Mit ihnen darf gerechnet werden (das Ergebnis ist dann i.a. ein int)! Typ char

Speicherbedarf 16 bit

Wertebereich von 0 bis 65.535 (von ’\u0000’ bis ’\uffff’)

Achtung char ist der einzige vorzeichenlose numerische Datentyp.

15 / 30

Zeichenkonstanten Zeichenkonstanten werden in Hochkommata geschrieben.

Beispiel ’a’, ’1’.

Codierung von speziellen Zeichen mit Escape-Sequenzen und Unicode–Escapes Escape–Sequenzen Zeichen ’\b’

Unicode ’\u0008’

Bezeichung Backspace

’\r’ ’\f’ ’\t’ ’\n’ ’\\’ ’\’’ ’\"’

’\u000d’ ’\u000c’ ’\u0009’ ’\u000a’ ’\u005c’ ’\u0027’ ’\u0022’

Carriage Return Formfeed Horizontal Tab Line Feed Backslash Anfuhrungszeichen ¨ ¨ “Gansef ußchen“ ¨

Wirkung Cursor einen Schritt nach links. Cursor an Zeilenanfang. Seitenvorschub, neue Seite Tabulator Zeilenvorschub, neue Zeile

16 / 30

ASCII–Tabelle hex $00 $01 $02 $03 $04 $05 $06 $07 $08 $09 $0A $0B $0C $0D $0E $0F

dez 00 01 02 03 04 05 06 07 08 09 10 11 12 13 14 15

$00 00 NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI

$10 16 DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US

$20 32 ! " # $ % & ’ ( ) ∗ + , − . /

$30 48 0 1 2 3 4 5 6 7 8 9 : ; < = > ?

$40 64 @ A B C D E F G H I J K L M N O

$50 80 P Q R S T U V W X Y Z [ \ ] ^

$60 96 ` a b c d e f g h i j k l m n o

$70 112 p q r s t u v w x y z { | } ~ DEL

17 / 30

Unicode – Beispiel

Beispiel Bei der Verwendung des Unicode–Zeichensatzes wird durch System.out.println (’\u0051’); das Zeichen Q ausgegeben. Eine Liste aller Unicode-Zeichen gibt es unter http://www.unicode.org/charts/

18 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

19 / 30

Zeichenketten, String

Der Datentyp String dient zur Speicherung (beliebig langer) Zeichenketten.

Achtung ¨ zu den Referenztypen! Dies hat Auswirkungen bei String zahlt manchen Operationen.

20 / 30

Stringkonstanten – Zeichenketten

• Fur ¨ Zeichenketten (engl. Strings) ist in Java der Typ

String vorgesehen. • Im Gegensatz zu Zeichenkonstanten werden

Zeichenketten in doppelte Hochkommata gesetzt. • Die Verwendung der Unicode– und Escape–Sequenzen ist

identisch zu ihrer Verwendung bei Zeichenkonstanten. • Durch Einfugen von \n in die Zeichenkette kann die ¨

Ausgabe auf dem Bildschirm uber mehrere Zeilen erfolgen. ¨ • Lange Zeichenketten konnen ¨ mit Hilfe der Stringkonkatenation + in mehrere Teilzeichenketten aufgespalten werden.

21 / 30

Stringkonstanten – Beispiel

Beispiel "Dies ist ei" + "n einzeiliger String."

Beispiel "Dies ist ein \nzweizeiliger String."

22 / 30

Stringkonstanten – Beispiel Achtung "5" ist nicht vom Typ char, sondern eine Zeichenkette und damit vom Typ String! Mit Strings kann nicht gerechnet werden.

Bemerkung Tritt die gleiche Zeichenkette mehrmals auf, so wird diese i.a. nur einmal gespeichert.

Beispiel S t r i n g a = ” Einmal i s t genug ! ” ; S t r i n g b = ” Einmal i s t genug ! ” ; 23 / 30

Stringkonstanten – Beispiel

public class B e i s p i e l { public s t a t i c void main ( S t r i n g [ ] args ) { double c e l s i u s , f a h r e n h e i t ; celsius = 30.0; f a h r e n h e i t = 1.8∗ c e l s i u s + 32.0; System . o u t . p r i n t l n ( ” Temperatur i n F a h r e n h e i t = ” + fahrenheit ); } }

24 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

25 / 30

Boolescher Typ

• Boolsche Variablen speichern Wahrheitswerte, also z.B.

Ergebnisse von Vergleichen. • Der Datentyp lautet boolean. • Es konnen ¨ nur die Wahrheitswerte true (wahr) und false

(falsch) angenommen werden.

26 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

27 / 30

Referenztypen

• Referenztypen treten auf bei Objekten (Klassen, Feldern,

Strings). • Sie sind das Gegenteil der bisher genannten

¨ Grundtypen/elementaren Typen und werden in spateren Kapiteln ausfuhrlich behandelt. ¨ • Eine Referenzvariable enthalt ¨ nicht die Daten, sondern nur eine Referenz darauf (d.h. Adresse, Pointer, Verweis). • null bezeichnet die Nullreferenz, die auf kein Objekt

verweist.

28 / 30

Gliederung ¨ 1 Uberblick 2 Ganzzahlige Typen 3 Gleitkommatypen 4 Zeichen, char 5 Zeichenketten, String 6 Boolscher Typ 7 Referenztypen 8 void–Typ

29 / 30

void Dieser Typ ist ein Pseudotyp und tritt bei Methoden auf. Besitzt eine Methode keinen Ruckgabewert, so wird void, d. h. ¨ nichts“ als Ergebnis zuruckgegeben. ¨ ”

Beispiel public s t a t i c void main ( S t r i n g [ ] args ) {}

Achtung Aufgrund der Unterscheidung zwischen Klein– und Großbuchstaben mussen die boolschen Konstanten true und ¨ false sowie die Nullreferenz null und der Pseudotyp void in Kleinbuchstaben angegeben werden!

30 / 30