1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
|
<html>
<head>
<title>
Handbuch der Java-Programmierung, 5. Auflage
</title>
</head>
<body>
<a name="startofbody"></a>
<script language="JavaScript" src="hjp4lib.js">
</script>
<script language="JavaScript">
installKbdHandler("97,#startofbody;101,#endofbody;116,cover.html;122,k100003.html;115,search.html;105,index.html;100,JDKDOCS;112,APIDOCS;104,k100022.html;106,k100023.html;107,k100025.html;108,k100030.html");
</script>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100022.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100023.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100025.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100030.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">Kapitel 4 - Datentypen
</table>
<hr>
<!-- Section -->
<a name="sectlevel2id004002"></a>
<h2>4.2 <a name="ixa100237">Primitive Datentypen</a><a name="ixa100238"></a></h2>
<hr>
<ul>
<li><a href="k100024.html#sectlevel2id004002">4.2 Primitive Datentypen</a>
<ul>
<li><a href="k100024.html#sectlevel3id004002001">4.2.1 Der logische Typ</a>
<ul>
<li><a href="k100024.html#sectlevel4id004002001001">Literale</a>
</ul>
<li><a href="k100024.html#derzeichentyp">4.2.2 Der Zeichentyp</a>
<ul>
<li><a href="k100024.html#sectlevel4id004002002001">Literale</a>
</ul>
<li><a href="k100024.html#sectlevel3id004002003">4.2.3 Die integralen Typen</a>
<ul>
<li><a href="k100024.html#sectlevel4id004002003001">Literale</a>
</ul>
<li><a href="k100024.html#fliesskommazahlen">4.2.4 Die Fließkommazahlen</a>
<ul>
<li><a href="k100024.html#sectlevel4id004002004001">Literale</a>
</ul>
</ul>
</ul>
<hr>
<p>
Java kennt acht elementare Datentypen, die gemäß Sprachspezifikation
als <i>primitive Datentypen</i> bezeichnet werden. Daneben gibt es
die Möglichkeit, Arrays zu definieren (die eingeschränkte
Objekttypen sind), und als objektorientierte Sprache erlaubt Java
natürlich die Definition von Objekttypen.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>
<p>
Im Gegensatz zu C und C++ gibt es die folgenden Elemente in Java jedoch
nicht:
<ul>
<li>explizite Zeiger
<li>Typdefinitionen (typedef)
<li>Recordtypen (struct und union)
<li>Bitfelder
</ul>
</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF"> Hinweis </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<p>
Was auf den ersten Blick wie eine Designschwäche aussieht, entpuppt
sich bei näherem Hinsehen als Stärke von Java. Der konsequente
Verzicht auf zusätzliche Datentypen macht die Sprache leicht
erlernbar und verständlich. Die Vergangenheit hat mehrfach gezeigt,
dass Programmiersprachen mit einem überladenen Typkonzept (zum
Beispiel PL/I oder ADA) auf Dauer keine Akzeptanz finden.
<p>
Tatsächlich ist es ohne weiteres möglich, die unverzichtbaren
Datentypen mit den in Java eingebauten Hilfsmitteln nachzubilden.
So lassen sich beispielsweise Zeiger zur Konstruktion <a name="ixa100239">dynamischer
Datenstrukturen</a> mit Hilfe von Referenzvariablen
simulieren, und Recordtypen sind nichts anderes als Klassen ohne Methoden.
Der Verzicht auf Low-Level-Datenstrukturen, wie beispielsweise Zeigern
zur Manipulation von Speicherstellen oder Bitfeldern zur Repräsentation
von Hardwareelementen, ist dagegen gewollt.
<p>
Alle primitiven Datentypen in Java haben - unabhängig von der
Plattform auf der Java ausgeführt wird - eine feste Länge,
die von den Designern der Sprache ein für allemal verbindlich
festgelegt wurde. Ein <font color="#000077"><tt>sizeof</tt></font>-Operator,
wie er in C vorhanden ist, wird in Java daher nicht benötigt
und ist auch nicht vorhanden.
<p>
Ein weiterer Unterschied zu C und den meisten anderen Programmiersprachen
besteht darin, dass Variablen in Java immer einen definierten Wert
haben. Bei Membervariablen (also Variablen innerhalb von Klassen,
siehe <a href="k100046.html#kapiteloop1">Kapitel 7</a>) bekommt eine
Variable einen <a name="ixa100240">Standardwert</a> zugewiesen, wenn
dieser nicht durch eine explizite Initialisierung geändert wird.
Bei <i>lokalen</i> Variablen sorgt der Compiler durch eine <a name="ixa100241">Datenflussanalyse</a>
dafür, dass diese vor ihrer Verwendung explizit initialisiert
werden. Eine Erläuterung dieses Konzepts, das unter dem Namen
<a name="ixa100242"><i>Definite Assignment</i></a> in der Sprachdefinition
beschrieben wird, ist Bestandteil von <a href="k100030.html#kapitelausdruecke">Kapitel 5</a>.
<a href="k100024.html#primitivedatentypen">Tabelle 4.1</a> listet
die in Java verfügbaren Basistypen und ihre Standardwerte auf:
<a name="primitivedatentypen"></a>
<p>
<table cols=4 border width=100%>
<tr>
<td valign=top align=left width=25%><b>Typname</b></td>
<td valign=top align=left width=25%><b>Länge</b></td>
<td valign=top align=left width=25%><b>Wertebereich</b></td>
<td valign=top align=left width=25%><b>Standardwert </b></td></tr>
<tr>
<td valign=top align=left><a name="ixa100243"><a href="index_b.html#ixb100072"><font color=#000080><tt>boolean</tt></font></a></a></td>
<td valign=top align=left>1</td>
<td valign=top align=left><a name="ixa100244"><a href="index_t.html#ixb100233"><font color=#000080><tt>true</tt></font></a></a>,
<a name="ixa100245"><a href="index_f.html#ixb100234"><font color=#000080><tt>false</tt></font></a></a></td>
<td valign=top align=left><a href="index_f.html#ixb100234"><font color=#000080><tt>false</tt></font></a>
</td></tr>
<tr>
<td valign=top align=left><a name="ixa100246"><a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a></a></td>
<td valign=top align=left>2</td>
<td valign=top align=left>Alle Unicode-Zeichen</td>
<td valign=top align=left>\u0000 </td></tr>
<tr>
<td valign=top align=left><a name="ixa100247"><a href="index_b.html#ixb100242"><font color=#000080><tt>byte</tt></font></a></a></td>
<td valign=top align=left>1</td>
<td valign=top align=left>-2<sup>7</sup>...2<sup>7</sup>-1</td>
<td valign=top align=left>0 </td></tr>
<tr>
<td valign=top align=left><a name="ixa100248"><a href="index_s.html#ixb100243"><font color=#000080><tt>short</tt></font></a></a></td>
<td valign=top align=left>2</td>
<td valign=top align=left>-2<sup>15</sup>...2<sup>15</sup>-1</td>
<td valign=top align=left>0 </td></tr>
<tr>
<td valign=top align=left><a name="ixa100249"><a href="index_i.html#ixb100244"><font color=#000080><tt>int</tt></font></a></a></td>
<td valign=top align=left>4</td>
<td valign=top align=left>-2<sup>31</sup>...2<sup>31</sup>-1</td>
<td valign=top align=left>0 </td></tr>
<tr>
<td valign=top align=left><a name="ixa100250"><a href="index_l.html#ixb100245"><font color=#000080><tt>long</tt></font></a></a></td>
<td valign=top align=left>8</td>
<td valign=top align=left>-2<sup>63</sup>...2<sup>63</sup>-1</td>
<td valign=top align=left>0 </td></tr>
<tr>
<td valign=top align=left><a name="ixa100251"><a href="index_f.html#ixb100246"><font color=#000080><tt>float</tt></font></a></a></td>
<td valign=top align=left>4</td>
<td valign=top align=left>+/-3.40282347 * 10<sup>38</sup></td>
<td valign=top align=left>0.0 </td></tr>
<tr>
<td valign=top align=left><a name="ixa100252"><a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a></a></td>
<td valign=top align=left>8</td>
<td valign=top align=left>+/-1.79769313486231570 * 10<sup>308</sup></td>
<td valign=top align=left>0.0</td></tr>
</table>
<p><i>
Tabelle 4.1: Primitive Datentypen </i></p>
<!-- Section -->
<a name="sectlevel3id004002001"></a>
<h3>4.2.1 Der logische Typ<a name="ixa100253"></a> </h3>
<p>
Mit <a name="ixa100254"><a href="index_b.html#ixb100072"><font color=#000080><tt>boolean</tt></font></a></a>
besitzt Java einen eigenen logischen Datentyp und beseitigt damit
eine oft diskutierte Schwäche von C und C++. Der <a href="index_b.html#ixb100072"><font color=#000080><tt>boolean</tt></font></a>-Typ
muss zwangsweise dort verwendet werden, wo ein logischer Operand erforderlich
ist. Ganzzahlige Typen mit den Werten 0 oder 1 dürfen nicht als
Ersatz für einen logischen Typen verwendet werden.
<!-- Section -->
<a name="sectlevel4id004002001001"></a>
<h4><a name="ixa100255">Literale</a></h4>
<p>
Der Datentyp <a href="index_b.html#ixb100072"><font color=#000080><tt>boolean</tt></font></a>
kennt zwei verschiedene Werte, nämlich <a name="ixa100256"><a href="index_t.html#ixb100233"><font color=#000080><tt>true</tt></font></a></a>
und <a name="ixa100257"><a href="index_f.html#ixb100234"><font color=#000080><tt>false</tt></font></a></a>.
Neben den vordefinierten Konstanten gibt es keine weiteren Literale
für logische Datentypen.
<!-- Section -->
<a name="derzeichentyp"></a>
<h3>4.2.2 Der <a name="ixa100258">Zeichentyp</a> </h3>
<p>
Java wurde mit dem Anspruch entworfen, bekannte Schwächen bestehender
Programmiersprachen zu vermeiden, und der Wunsch nach Portabilität
stand ganz oben auf der Liste der Designziele. Konsequenterweise wurde
der Typ <a name="ixa100259"><a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a></a>
in Java daher bereits von Anfang an 2 Byte groß gemacht und
speichert seine Zeichen auf der Basis des <a name="ixa100260">Unicode</a>-Zeichensatzes.
Als einziger integraler Datentyp ist <a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a>
nicht vorzeichenbehaftet.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>
<p>
Da das Sprachdesign und das Java-API so gestaltet wurden, dass die
Verwendung des Unicode-Zeichensatzes weitgehend transparent bleibt,
ergeben sich für die meisten Entwickler zunächst kaum Umstellungsprobleme.
Ein <a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a>
oder <a href="index_s.html#ixb100117"><font color=#000080><tt>String</tt></font></a>
kann in Java genauso intuitiv benutzt werden wie in Sprachen, die
auf dem ASCII-Zeichensatz aufbauen. Unterschiede werden vor allem
dann deutlich, wenn Berührungspunkte zwischen der internen Unicode-Darstellung
und der Repräsentation auf Systemebene entstehen, beispielsweise
beim Lesen oder Schreiben von Textdateien.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#000077">
<tr>
<td><font color="#FFFFFF"> Hinweis </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#000077"><img src="trp1_1.gif"></td>
</tr>
</table>
<!-- Section -->
<a name="sectlevel4id004002002001"></a>
<h4><a name="ixa100261">Literale</a></h4>
<p>
<a name="ixa100262"><a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a></a>-Literale
werden grundsätzlich in einfache Hochkommata gesetzt. Daneben
gibt es <a name="ixa100263"><a href="index_s.html#ixb100117"><font color=#000080><tt>String</tt></font></a></a>-Literale,
die in doppelten Hochkommata stehen. Ähnlich wie C stellt Java
eine ganze Reihe von Standard-<a name="ixa100264">Escape-Sequenzen</a>
zur Verfügung, die zur Darstellung von Sonderzeichen verwendet
werden können: <a name="tableid004002"></a>
<p>
<table cols=2 border width=66%>
<tr>
<td valign=top align=left width=33%><b>Zeichen</b></td>
<td valign=top align=left width=66%><b>Bedeutung </b></td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\b</tt></font></td>
<td valign=top align=left>Rückschritt (Backspace) </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\t</tt></font></td>
<td valign=top align=left>Horizontaler Tabulator </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\n</tt></font></td>
<td valign=top align=left>Zeilenschaltung (Newline) </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\f</tt></font></td>
<td valign=top align=left>Seitenumbruch (Formfeed) </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\r</tt></font></td>
<td valign=top align=left>Wagenrücklauf (Carriage return) </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\"</tt></font></td>
<td valign=top align=left>Doppeltes Anführungszeichen </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\'</tt></font></td>
<td valign=top align=left>Einfaches Anführungszeichen </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\\</tt></font></td>
<td valign=top align=left>Backslash </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\nnn</tt></font></td>
<td valign=top align=left>Oktalzahl nnn (kann auch kürzer als
3 Zeichen sein, darf nicht größer als oktal 377 sein) </td></tr>
</table>
<p><i>
Tabelle 4.2: Standard-Escape-Sequenzen </i></p>
<p>
Weiterhin können beliebige Unicode-Escape-Sequenzen<a name="ixa100265"></a>
der Form <font color="#000077"><tt>\uxxxx</tt></font> angegeben werden,
wobei <font color="#000077"><tt>xxxx</tt></font> eine Folge von bis
zu 4 hexadezimalen Ziffern ist. So steht beispielsweise <font color="#000077"><tt>\u000a</tt></font>
für die Zeilenschaltung und <font color="#000077"><tt>\u0020</tt></font>
für das Leerzeichen.
<p>
<table border=0 cellspacing=0 cellpadding=0 width=100%>
<tr>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=1></td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top width=1000>
<p>
Eine wichtiger Unterschied zu Standard-Escape-Sequenzen besteht darin,
dass Unicode-Escape-Sequenzen an beliebiger Stelle im Programm auftauchen
dürfen, also auch außerhalb von <a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a>-
oder <a href="index_s.html#ixb100117"><font color=#000080><tt>String</tt></font></a>-Literalen.
Wichtig ist außerdem, dass diese bereits <i>vor</i> der eigentlichen
Interpretation des Quelltextes ausgetauscht werden. Es ist also beispielsweise
nicht möglich, ein <a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a>-Literal,
das ein Anführungszeichen darstellen soll, in der Form '\u0027'
zu schreiben. Da die Unicode-Sequenzen bereits vor dem eigentlichen
Compiler-Lauf ausgetauscht werden, würde der Compiler die Sequenz
''' vorfinden und einen Fehler melden.</td>
<td><img src="trp1_1.gif" width=2></td>
<td valign=top>
<table border=0 cellspacing=0 cellpadding=1 width=100% bgcolor="#CC0000">
<tr>
<td><font color="#FFFFFF"> Warnung </font></td>
</tr>
</table>
</td>
<td width=1 align=left valign=top bgcolor="#CC0000"><img src="trp1_1.gif"></td>
</tr>
</table>
<!-- Section -->
<a name="sectlevel3id004002003"></a>
<h3>4.2.3 Die integralen Typen<a name="ixa100266"></a> </h3>
<p>
Java stellt vier ganzzahlige Datentypen zur Verfügung, und zwar
<a name="ixa100267"><a href="index_b.html#ixb100242"><font color=#000080><tt>byte</tt></font></a></a>,
<a name="ixa100268"><a href="index_s.html#ixb100243"><font color=#000080><tt>short</tt></font></a></a>,
<a name="ixa100269"><a href="index_i.html#ixb100244"><font color=#000080><tt>int</tt></font></a></a>
und <a name="ixa100270"><a href="index_l.html#ixb100245"><font color=#000080><tt>long</tt></font></a></a>,
mit jeweils 1, 2, 4 und 8 Byte Länge. Alle ganzzahligen Typen
sind vorzeichenbehaftet, und ihre Länge ist auf allen Plattformen
gleich.
<p>
Anders als in C sind die Schlüsselwörter <a href="index_l.html#ixb100245"><font color=#000080><tt>long</tt></font></a>
und <a href="index_s.html#ixb100243"><font color=#000080><tt>short</tt></font></a>
bereits Typenbezeichner und nicht nur Modifier. Es ist daher nicht
erlaubt, <font color="#000077"><tt>long int</tt></font> oder <font color="#000077"><tt>short
int</tt></font> anstelle von <a href="index_l.html#ixb100245"><font color=#000080><tt>long</tt></font></a>
bzw. <a href="index_s.html#ixb100243"><font color=#000080><tt>short</tt></font></a>
zu schreiben. Auch den Modifier <font color="#000077"><tt>unsigned</tt></font>
gibt es in Java nicht.
<!-- Section -->
<a name="sectlevel4id004002003001"></a>
<h4><a name="ixa100271">Literale</a></h4>
<p>
Ganzzahlige Literale können in Dezimal-, Oktal- oder Hexadezimalform
geschrieben werden. Ein oktaler Wert beginnt mit dem Präfix <font color="#000077"><tt>0</tt></font>,
ein hexadezimaler Wert mit <font color="#000077"><tt>0x</tt></font>.
Dezimale Literale dürfen nur aus den Ziffern <font color="#000077"><tt>0</tt></font>
bis <font color="#000077"><tt>9</tt></font>, oktale aus den Ziffern
<font color="#000077"><tt>0</tt></font> bis <font color="#000077"><tt>7</tt></font>
und hexadezimale aus den Ziffern <font color="#000077"><tt>0</tt></font>
bis <font color="#000077"><tt>9</tt></font> und den Buchstaben <font color="#000077"><tt>a</tt></font>
bis <font color="#000077"><tt>f</tt></font> und <font color="#000077"><tt>A</tt></font>
bis <font color="#000077"><tt>F</tt></font> bestehen.
<p>
Durch Voranstellen eines <font color="#000077"><tt>-</tt></font> können
negative Zahlen dargestellt werden, positive können wahlweise
durch ein <font color="#000077"><tt>+</tt></font> eingeleitet werden.
Ganzzahlige Literale sind grundsätzlich vom Typ <a href="index_i.html#ixb100244"><font color=#000080><tt>int</tt></font></a>,
wenn nicht der Suffix <font color="#000077"><tt>L</tt></font> oder
<font color="#000077"><tt>l</tt></font> hinten angehängt wird.
In diesem Fall sind sie vom Typ <a href="index_l.html#ixb100245"><font color=#000080><tt>long</tt></font></a>.
<!-- Section -->
<a name="fliesskommazahlen"></a>
<h3>4.2.4 Die <a name="ixa100272">Fließkommazahlen</a> </h3>
<p>
Java kennt die beiden IEEE-754-Fließkommatypen <a name="ixa100273"><a href="index_f.html#ixb100246"><font color=#000080><tt>float</tt></font></a></a>
(einfache Genauigkeit) und <a name="ixa100274"><a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a></a>
(doppelte Genauigkeit). Die Länge beträgt 4 Byte für
<a href="index_f.html#ixb100246"><font color=#000080><tt>float</tt></font></a>
und 8 Byte für <a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a>.
<!-- Section -->
<a name="sectlevel4id004002004001"></a>
<h4><a name="ixa100275">Literale</a></h4>
<p>
Fließkommaliterale werden immer in Dezimalnotation aufgeschrieben.
Sie bestehen aus einem Vorkommateil, einem Dezimalpunkt, einem Nachkommateil,
einem Exponenten und einem Suffix. Um ein Fließkommaliteral
von einem integralen Literal unterscheiden zu können, muss mindestens
der Dezimalpunkt, der Exponent oder der Suffix vorhanden sein. Entweder
der Vorkomma- oder der Nachkommateil darf ausgelassen werden, aber
nicht beide. Vorkommateil und Exponent können wahlweise durch
das Vorzeichen <font color="#000077"><tt>+</tt></font> oder <font color="#000077"><tt>-</tt></font>
eingeleitet werden. Weiterhin ist der Exponent, der durch ein <font color="#000077"><tt>e</tt></font>
oder <font color="#000077"><tt>E</tt></font> eingeleitet wird, optional.
Auch der Suffix kann weggelassen werden, wenn durch die anderen Merkmale
klar ist, dass es sich um eine Fließkommazahl handelt. Der Suffix
kann entweder <font color="#000077"><tt>f</tt></font> oder <font color="#000077"><tt>F</tt></font>
sein, um anzuzeigen, dass es sich um ein <a href="index_f.html#ixb100246"><font color=#000080><tt>float</tt></font></a>
handelt, oder <font color="#000077"><tt>d</tt></font> oder <font color="#000077"><tt>D</tt></font>,
um ein <a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a>
anzuzeigen. Fehlt er, so ist das Literal (unabhängig von seiner
Größe) vom Typ <a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a>.
<p>
Gültige Fließkommazahlen sind:
<ul>
<li>3.14
<li>2f
<li>1e1
<li>.5f
<li>6.
</ul>
<p>
Neben diesen numerischen Literalen gibt es noch einige symbolische
in den Klassen <a name="ixa100276"><a href="index_f.html#ixb100254"><font color=#000080><tt>Float</tt></font></a></a>
und <a name="ixa100277"><a href="index_d.html#ixb100255"><font color=#000080><tt>Double</tt></font></a></a>
des Pakets <a href="index_j.html#ixb100188"><font color=#000080><tt>java.lang</tt></font></a>.
<a href="k100024.html#fliesskommaliterale">Tabelle 4.3</a> gibt eine
Übersicht dieser vordefinierten Konstanten. <a name="ixa100278"><a href="index_n.html#ixb100256"><font color=#000080><tt>NaN</tt></font></a></a>
entsteht beispielsweise bei der Division durch 0, <a name="ixa100279"><a href="index_p.html#ixb100257"><font color=#000080><tt>POSITIVE_INFINITY</tt></font></a></a>
bzw. <a name="ixa100280"><a href="index_n.html#ixb100258"><font color=#000080><tt>NEGATIVE_INFINITY</tt></font></a></a>
sind Zahlen, die größer bzw. kleiner als der darstellbare
Bereich sind. <a name="fliesskommaliterale"></a>
<p>
<table cols=3 border width=100%>
<tr>
<td valign=top align=left width=20%><b>Name</b></td>
<td valign=top align=left width=40%><b>Verfügbar für</b></td>
<td valign=top align=left width=40%><b>Bedeutung </b></td></tr>
<tr>
<td valign=top align=left><a name="ixa100281"><a href="index_m.html#ixb100259"><font color=#000080><tt>MAX_VALUE</tt></font></a></a></td>
<td valign=top align=left><a href="index_f.html#ixb100254"><font color=#000080><tt>Float</tt></font></a>,
<a href="index_d.html#ixb100255"><font color=#000080><tt>Double</tt></font></a></td>
<td valign=top align=left>Größter darstellbarer positiver
Wert </td></tr>
<tr>
<td valign=top align=left><a name="ixa100282"><a href="index_m.html#ixb100260"><font color=#000080><tt>MIN_VALUE</tt></font></a></a></td>
<td valign=top align=left><a href="index_f.html#ixb100254"><font color=#000080><tt>Float</tt></font></a>,
<a href="index_d.html#ixb100255"><font color=#000080><tt>Double</tt></font></a></td>
<td valign=top align=left>Kleinster darstellbarer positiver Wert </td></tr>
<tr>
<td valign=top align=left><a name="ixa100278"><a href="index_n.html#ixb100256"><font color=#000080><tt>NaN</tt></font></a></a></td>
<td valign=top align=left><a href="index_f.html#ixb100254"><font color=#000080><tt>Float</tt></font></a>,
<a href="index_d.html#ixb100255"><font color=#000080><tt>Double</tt></font></a></td>
<td valign=top align=left>Not-A-Number </td></tr>
<tr>
<td valign=top align=left><a name="ixa100280"><a href="index_n.html#ixb100258"><font color=#000080><tt>NEGATIVE_INFINITY</tt></font></a></a></td>
<td valign=top align=left><a href="index_f.html#ixb100254"><font color=#000080><tt>Float</tt></font></a>,
<a href="index_d.html#ixb100255"><font color=#000080><tt>Double</tt></font></a></td>
<td valign=top align=left>Negativ unendlich </td></tr>
<tr>
<td valign=top align=left><a name="ixa100279"><a href="index_p.html#ixb100257"><font color=#000080><tt>POSITIVE_INFINITY</tt></font></a></a></td>
<td valign=top align=left><a href="index_f.html#ixb100254"><font color=#000080><tt>Float</tt></font></a>,
<a href="index_d.html#ixb100255"><font color=#000080><tt>Double</tt></font></a></td>
<td valign=top align=left>Positiv unendlich </td></tr>
</table>
<p><i>
Tabelle 4.3: Symbolische Fließkommaliterale </i></p>
<hr>
<table border=0 cellpadding=0 cellspacing=1 width="100%">
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="cover.html"> Titel </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html"> Inhalt </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html"> Suchen </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html"> Index </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()"> DOC </a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage, Addison
Wesley, Version 5.0.1
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100022.html"> << </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100023.html"> < </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100025.html"> > </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100030.html"> >> </a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()"> API </a>
<td align="right">© 1998, 2007 Guido Krüger & Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>
|