Читать книгу Algorithmen und Datenstrukturen - Gunter Saake - Страница 56

2.5.1Primitive Datentypen

Оглавление

Die primitiven Datentypen sind die in der Sprache »eingebauten« Typen zur Speicherung von Werten. Die Menge dieser Typen ist dabei statisch und kann auch nicht erweitert werden. Zu den primitiven Datentypen gehören:

 die numerischen Typen für Ganz- und Gleitkommazahlen,

 der Zeichen-Datentyp,

 der boolesche Datentyp.

Ganzzahl-Datentypen Gleitkomma-Datentypen

Die Ganzzahl-Datentypen dienen zur Repräsentation ganzzahliger numerischer Werte (sogenannter Integerwerte) und sind vorzeichenbehaftet. Es gibt die Typen byte, short, int und long, die sich durch die Art der internen Speicherung, d.h. die Anzahl der benutzten Bits, und die sich daraus ergebenden Wertebereiche unterscheiden (Tabelle 2–1). Für numerische Gleitkommawerte gibt es mit float und double zwei verschiedene Typen für unterschiedliche Wertbereiche und Genauigkeiten (Tabelle 2–1).

Tab. 2–1 Numerische Datentypen in Java

Datentyp Größe Wertebereich
byte 8 Bit − 128 … 127
short 16 Bit − 32768 … 32767
int 32 Bit − 231 … 231− 1
long 64 Bit − 263 … 263− 1
float 32 Bit 10−46 … 1038 (6 sign. Stellen)
double 64 Bit 10−324 … 10308 (15 sign. Stellen)

Zeichen-Datentyp

Als Zeichen-Datentyp bietet Java den Typ char, der einen vorzeichenlosen 16-Bit-Integer-Typ darstellt. Dieser Typ erlaubt die Repräsentation von Zeichen im sogenannten Unicode-Zeichensatz, der u.a. auch chinesische und arabische Schriftzeichen unterstützt. Es ist jedoch zu beachten, dass mit einem char-Wert nur jeweils ein Zeichen gespeichert werden kann: Zeichenketten (Strings) werden dagegen mithilfe der Klasse java.lang.String dargestellt, die intern ein Feld von char-Werten verwaltet.

Boolescher Datentyp

Der boolesche Datentyp zur Repräsentation von Wahrheitswerten heißt in Java boolean und wird als 1-Bit-Wert gespeichert. Mögliche Werte sind dabei true und false. Der boolean-Typ wird insbesondere als Ergebnistyp von logischen Vergleichen angewendet.

Deklaration

Datentypen beschreiben Struktur und Wertebereich von Daten bzw. Werten. Die Werte selbst werden in Variablen gespeichert, die benannte Speicherbereiche (im Fall von primitiven Datentypen) bzw. benannte Verweise auf Speicherbereiche (bei Referenzdatentypen) darstellen. Jeder Variablen ist ein Typ zugeordnet, dem Wert und angewendete Operationen entsprechen müssen. Jede Variable muss in Java vor der Verwendung deklariert werden. Diese Deklaration umfasst

 die Festlegung des Typs,

 die Initialisierung (explizit durch Angabe eines Wertes oder implizit durch den Standardwert 0) und

 die Bestimmung der Sichtbarkeit (speziell bei Attributen im Rahmen einer Klassendefinition).

Eine Variable wird in folgender Notation deklariert:

typ bezeichner [ = init_wert ];

Hierbei ist die Angabe des Initialwertes optional (ausgedrückt durch die eckigen Klammern). Variablen können überall in Methoden oder Anweisungsblöcken vereinbart werden. Im Interesse einer besseren Übersichtlichkeit sollte dies jedoch vorzugsweise zu Beginn eines Blockes erfolgen.

Bezeichner

Die Namen oder Bezeichner für Variablen (sowie auch Klassen und Methoden) lassen sich frei wählen und unterliegen keiner Längenbeschränkung. Sie dürfen jedoch keine Schlüsselwörter von Java sein und nicht mit einer Ziffer beginnen.

Literale

Ein weiteres Konzept im Zusammenhang mit Variablen sind die Literale oder Konstanten. Hierbei kann unterschieden werden in

 numerische Werte, wie beispielsweise 42, 23L (für einen long-Wert) oder 345.7 und 7.899E+34 für Gleitkommawerte,

 Zeichen wie ’a’ und ’\u0012’,

 Zeichenketten, z.B. "Ein String".

Bei der Schreibweise ’\uxxxx ’ handelt es sich um eine Unicode-Escape-Sequenz, wobei xxxx für eine vierstellige Hexadezimalzahl mit dem Code des Zeichens steht. Im folgenden Beispiel ist die Deklaration von Variablen verschiedener primitiver Typen noch einmal illustriert:

int eineVariable = 23;

float a, b;

char c1 = ’A’, c2 = ’B’;

boolean einWahrheitsWert = true;

Seit der Version 7.0 existieren noch weitere Möglichkeiten zur Angabe von Literalen. So können Werte auch binär angegeben (z.B. 0b00100110 für den Wert 70) sowie lange Integer-Werte zur besseren Lesbarkeit mit Unterstrich separiert werden:

byte einByteWert = (byte) 0b00100110;

long meineKreditkartenNummer = 9876_5432_0123_4567L;

Typinferenz var

Mit Version 10 wurde in Java auch die Idee der Typplatzhalter bzw. der Typinferenz für Variablen eingeführt. Dies bedeutet, dass der Java-Compiler versucht, anhand der rechten Seite der Zuweisung den Typ der Variablen zu ermitteln. Dazu wird als »Typ« der Variablen nicht mehr der konkrete Typ sondern nur noch das Schlüsselwort var angegeben:

var i = 42;

var meineKreditkartenNummer = 9876_5432_0123_4567L;

Es ist jedoch zu beachten, dass die Variablen dennoch fest typisiert sind – der Datentyp wird nur automatisch bestimmt. Würde man beispielsweise der obigen Variable i später einen Gleitkommawert zuweisen, erhält man eine Fehlermeldung zum Verlust der Genauigkeit aufgrund inkompatibler Typen.

Algorithmen und Datenstrukturen

Подняться наверх