summaryrefslogtreecommitdiffstats
path: root/Master/Reference Architectures and Patterns/hjp5/html/k100024.html
blob: d6414ccb23c2c619908ffdb6be502339e3f37d10 (plain)
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">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</a>
<td align="right">Handbuch der Java-Programmierung, 5. Auflage
<tr bgcolor="#EEFFCC">
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100022.html">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100023.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100025.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100030.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</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&szlig;kommazahlen</a>
<ul>
<li><a href="k100024.html#sectlevel4id004002004001">Literale</a>
</ul>
</ul>
</ul>
<hr>

<p>
Java kennt acht elementare Datentypen, die gem&auml;&szlig; Sprachspezifikation
als <i>primitive Datentypen</i> bezeichnet werden. Daneben gibt es
die M&ouml;glichkeit, Arrays zu definieren (die eingeschr&auml;nkte
Objekttypen sind), und als objektorientierte Sprache erlaubt Java
nat&uuml;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">&nbsp;Hinweis&nbsp;</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&auml;che aussieht, entpuppt
sich bei n&auml;herem Hinsehen als St&auml;rke von Java. Der konsequente
Verzicht auf zus&auml;tzliche Datentypen macht die Sprache leicht
erlernbar und verst&auml;ndlich. Die Vergangenheit hat mehrfach gezeigt,
dass Programmiersprachen mit einem &uuml;berladenen Typkonzept (zum
Beispiel PL/I oder ADA) auf Dauer keine Akzeptanz finden. 

<p>
Tats&auml;chlich ist es ohne weiteres m&ouml;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&auml;sentation
von Hardwareelementen, ist dagegen gewollt. 

<p>
Alle primitiven Datentypen in Java haben - unabh&auml;ngig von der
Plattform auf der Java ausgef&uuml;hrt wird - eine feste L&auml;nge,
die von den Designern der Sprache ein f&uuml;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&ouml;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&auml;ndert wird.
Bei <i>lokalen</i> Variablen sorgt der Compiler durch eine <a name="ixa100241">Datenflussanalyse</a>
daf&uuml;r, dass diese vor ihrer Verwendung explizit initialisiert
werden. Eine Erl&auml;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&uuml;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&auml;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&auml;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&uuml;rfen nicht als
Ersatz f&uuml;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&auml;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&uuml;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&auml;chen bestehender
Programmiersprachen zu vermeiden, und der Wunsch nach Portabilit&auml;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&szlig; 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&uuml;r die meisten Entwickler zun&auml;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&uuml;hrungspunkte zwischen der internen Unicode-Darstellung
und der Repr&auml;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">&nbsp;Hinweis&nbsp;</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&auml;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. &Auml;hnlich wie C stellt Java
eine ganze Reihe von Standard-<a name="ixa100264">Escape-Sequenzen</a>
zur Verf&uuml;gung, die zur Darstellung von Sonderzeichen verwendet
werden k&ouml;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&uuml;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&uuml;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&uuml;hrungszeichen </td></tr>
<tr>
<td valign=top align=left><font color="#000077"><tt>\'</tt></font></td>
<td valign=top align=left>Einfaches Anf&uuml;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&uuml;rzer als
3 Zeichen sein, darf nicht gr&ouml;&szlig;er als oktal 377 sein) </td></tr>
</table>
<p><i>
Tabelle 4.2: Standard-Escape-Sequenzen </i></p>

<p>
Weiterhin k&ouml;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&uuml;r die Zeilenschaltung und <font color="#000077"><tt>\u0020</tt></font>
f&uuml;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&uuml;rfen, also auch au&szlig;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&szlig;erdem, dass diese bereits <i>vor</i> der eigentlichen
Interpretation des Quelltextes ausgetauscht werden. Es ist also beispielsweise
nicht m&ouml;glich, ein <a href="index_c.html#ixb100215"><font color=#000080><tt>char</tt></font></a>-Literal,
das ein Anf&uuml;hrungszeichen darstellen soll, in der Form '\u0027'
zu schreiben. Da die Unicode-Sequenzen bereits vor dem eigentlichen
Compiler-Lauf ausgetauscht werden, w&uuml;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">&nbsp;Warnung&nbsp;</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&uuml;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&auml;nge. Alle ganzzahligen Typen
sind vorzeichenbehaftet, und ihre L&auml;nge ist auf allen Plattformen
gleich. 

<p>
Anders als in C sind die Schl&uuml;sselw&ouml;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&ouml;nnen in Dezimal-, Oktal- oder Hexadezimalform
geschrieben werden. Ein oktaler Wert beginnt mit dem Pr&auml;fix <font color="#000077"><tt>0</tt></font>,
ein hexadezimaler Wert mit <font color="#000077"><tt>0x</tt></font>.
Dezimale Literale d&uuml;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&ouml;nnen
negative Zahlen dargestellt werden, positive k&ouml;nnen wahlweise
durch ein <font color="#000077"><tt>+</tt></font> eingeleitet werden.
Ganzzahlige Literale sind grunds&auml;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&auml;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&szlig;kommazahlen</a> </h3>

<p>
Java kennt die beiden IEEE-754-Flie&szlig;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&auml;nge betr&auml;gt 4 Byte f&uuml;r
<a href="index_f.html#ixb100246"><font color=#000080><tt>float</tt></font></a>
und 8 Byte f&uuml;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&szlig;kommaliterale werden immer in Dezimalnotation aufgeschrieben.
Sie bestehen aus einem Vorkommateil, einem Dezimalpunkt, einem Nachkommateil,
einem Exponenten und einem Suffix. Um ein Flie&szlig;kommaliteral
von einem integralen Literal unterscheiden zu k&ouml;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&ouml;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&szlig;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&auml;ngig von seiner
Gr&ouml;&szlig;e) vom Typ <a href="index_d.html#ixb100247"><font color=#000080><tt>double</tt></font></a>.

<p>
G&uuml;ltige Flie&szlig;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
&Uuml;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&ouml;&szlig;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&uuml;gbar f&uuml;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&ouml;&szlig;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&szlig;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">&nbsp;Titel&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100003.html">&nbsp;Inhalt&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="search.html">&nbsp;Suchen&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="index.html">&nbsp;Index&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/index.html" onClick="this.href=getDocIndex()">&nbsp;DOC&nbsp;</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">&nbsp;&lt;&lt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100023.html">&nbsp;&nbsp;&lt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100025.html">&nbsp;&nbsp;&gt;&nbsp;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="k100030.html">&nbsp;&gt;&gt;&nbsp;</a>
<td width="7%" align=center bgcolor="#DDCC99"><a href="../jdkdocs/api/index.html" onClick="this.href=getApiIndex()">&nbsp;API&nbsp;</a>
<td align="right">&copy; 1998, 2007 Guido Kr&uuml;ger &amp; Thomas
Stark, <a href="http://www.javabuch.de">http://www.javabuch.de</a>
</table>
<a name="endofbody"></a>
</body>
</html>