Einführung in ausgewählte Aspekte ausgewählter Typen ausgewählter Literale der Programmiersprache Java im Rahmen der Lehre der Programmiersprache Java. (Java|Literaltypen), Lektion, Seite 722248
https://www.purl.org/stefan_ram/pub/java_ganze_zahlen (Permalink) ist die kanonische URI dieser Seite.
Stefan Ram
Java-Kurs

Typen in Java 

Wir haben bisher schon verschiedene Literale, wie »65«, »12.82« oder »"Alpha"« kennengelernt. Diese gehören offensichtlich verschiedenen Typen an: Das erste Literal steht für eine Zahl ohne  Nachkommastellen, der zweite für eine Zahl mit  Nachkommastellen und der dritte ist gar keine Zahl, sondern eine Zeichenfolge. Tatsächlich ordnet man solchen Literalen in Java  verschiedene sogenannte Typen zu (die man auch Datentypen  nennt). Beispielsweise hat das Literal »65« den Typ ›int‹, und das Literal »12.82« den Typ ›double‹.

Ein Typ ist eine Entität des Quelltextmodells.

Jedem Ausdruck (und damit auch jedem Literal) wird durch Regeln der Programmiersprache ein bestimmter Typ  zugeordnet. Der Typ eines Ausdrucks legt fest, an welchen Stellen eines Programmes der Ausdruck verwendet werden kann, und was diese Verwendung dann bedeutet.

Das Wort „Datentyp“ bedeutet dasselbe wie „Typ“, es ist ein Synonym.

Intern legt der Typ eines Wertes auch die interne Sprache fest, mit der die Werte von Ausdrücken jenes Typs im Speicher einer Java -Implementation festgehalten werden. Jedoch muß sich ein Programmierer normalerweise nicht mit diesen internen Sprachen von Java -Implementation beschäftigen.

int

Ein Numerale ohne Punkt ».« aus dem Bereich von «0» bis «2_147_483_647» hat den Typ ›int‹.

Der Datentyp ›int‹ wird auch als ein ganzzahliger Typ  bezeichnet, da seine Literale ganzzahlig sind, also keine Nachkommastellen haben.

Ein Numerale vom Datentyp ›int‹ ist ein ganzzahliges Numerale.

Für jeden int-Wert stehen 32 Bit zur Verfügung. Dadurch ist die Anzahl der möglichen int-Werte begrenzt.

Ein Typ kann einen Namen  haben. Beispielsweise ist »int« der Name des Typs ›int‹.

long

Der Datentype ›long‹ wird in diesem Grundkurs nicht  ausführlich vorgestellt, jedoch begegnet er uns in einigen Fällen. Man kann sich vorstellen, daß ›long‹ eine Variante von ›int‹ ist, die aber noch größere Werte, bis «9_223_372_036_854_775_807», also ‹ 2⁶³-1 ›, das heißt zirka neun Trillionen (‹ 9×10¹⁸ ›), zuläßt.

Für jeden long-Wert stehen 64 Bit zur Verfügung. Deswegen gibt es mehr long-Werte als int-Werte.

double‹ – physikalische Zahlen

Ein Numerale mit einem Punkt ».« hat den Typ ›double‹. Der Datentyp ›double‹ enthält Werte, die auch Nachkommastellen haben können.

Dieser Typ ist im allgemeinen der Typ von Literalen mit Nachkommastellen, jedoch wird dieser Typ einem Literal auch dann zugewiesen, wenn das Literal gar keine richtigen Nachkommastellen hat, wie bei »2.0«, da es einfacher ist, das formale Kriterium heranzuziehen, welches am Anfang dieses Abschnitts genannt wurde. Werte des Typs ›int‹ haben hingegen niemals Nachkommastellen.

Der Datentyp ›double‹ wird auch als Gleitkommatyp  bezeichnet, da seine Zahlen intern normalerweise in einer sogenannten „Gleitkommadarstellung“ abgespeichert werden.

Ein Numerale vom Datentyp ›double‹, wie beispielsweise »2.0«, ist ein Gleitkommanumerale.

Für jeden double-Wert stehen 64 Bit zur Verfügung. Dadurch ist die Genauigkeit und Größe der Werte begrenzt.

Ausgabe von double-Werten

Zahlen vom Typ ›double‹ werden stets mit einem Punkt  ».« ausgegeben. So kann man sie in der Ausgabe von Zahlen vom Typ ›int‹ unterscheiden.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 2.0 ); }}
Konsole
2.0

Ungenauigkeiten bei ›double‹-Werten

Bei Gleitkommawerten sind kleine Abweichungen von den Literalwerten gestattet und möglich.

Bei der Ausgabe eines double-Wertes wird dieser manchmal auf ein bestimmte Anzahl von Stellen abgeschnitten. Dies liegt daran, daß die Java -Implementation nur eine begrenzte Anzahl von Stellen verarbeiten und speichern kann. Für jeden double-Wert stehen 64 Bit zur Verfügung. Daher werden an Stelle von Werten eigentlich immer nur weniger genaue Wertebereiche gespeichert, so daß jeder double-Wert ungenau  ist.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 3.1415926535897932 ); }}
transcript
3.141592653589793
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 1.9999999999999999 ); }}
Konsole
2.0

Die Abweichung der Ausgabe vom mathematischen Wert des Numerales beträgt beim zweiten Programm nur 0,05 Billiardstel. Dies zeigt auch erneut deutlich den Unterschied zwischen einem Numerale und seinem Wert.

Oft sind nur die ersten zirka 16 Stellen eines double-Wertes bedeutsam, während weiter hinten liegende Stellen ignoriert werden sollten.

Daher können double-Werte gut für prinzipiell ohnehin ungenaue Werte verwendet werden, wie beispielsweise Meßwerte kontinuierlicher Größen (wie Länge, Geschwindigkeiten oder Temperaturen), die sowieso nie ganz genau gemessen werden können - wer kann beispielsweise seine genaue Körpergröße in Nanometern angeben?

Wegen der Ungenauigkeiten sind double-Werte für Währungsbeträge aber nur mit Einschränkungen verwendbar, denn bei Währungsbeträgen sollten gar keine  Abweichungen von den mathematischen Werten ihrer Numeralia auftreten. Java  bietet verschiedene Möglichkeiten, auch Währungsbeträge korrekt darzustellen, doch können diese hier noch nicht ausführlicher behandelt werden.

Wir nennen double-Werte hier physikalische Zahlen, da die verwendeten Näherungen solche Zahlen besonders für physikalische Zahlenwerte geeignet macht, weil bei diesen die hinteren Stellen tatsächlich nicht wichtig sind.

E-Numeralia

In einem Numerale steht »E« für „mal Zehn hoch“. »2E3« bedeutet also beispielsweise ‹ 2 × 10³ ›.

‹ 10³ › bezeichnet den Wert, den man erhält, wenn man die Zahl Eins drei Mal mit 10 multipliziert. Allgemein bezeichnet für eine natürliche Zahl n  der Term ‹ 10  › den Wert, den man erhält, wenn man die Zahl Eins n -mal mit 10 multipliziert. ‹ 2 × 10³ = 2 × 1 · 10 · 10 · 10 = 2 × 1000 = 2000 ›

Dies bedeutet praktisch, daß das Dezimalkomma bei »2.0« um drei Schritte nach rechts verschoben werden soll. Man erhält so »2000.0«.

»2E3« bedeutet also nicht  etwa „2³“, also die Zahl, welche man erhält indem man die Zahl Eins dreimal mit der Zahl 2 multipliziert (8).

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 2E3 ); }}
Konsole
2000.0

Ein solches Numerale mit einem »E« hat den Datentyp »double«, selbst wenn es keinen  Punkt enthält.

Wir verzichten an dieser Stelle auf eine ausführliche Darstellung des Aufbaus von E-Numeralia, da E-Numeralia im weiteren Verlauf dieses Kurses nur selten als Teile des Quelltextes vorkommen. Zahlenwerte werden von Programmen zwar manchmal in der E-Schreibweise ausgegeben, aber um diese zu verstehen, reicht die obenstehende Erklärung bereits aus.

Beim Exponenten (dem Wert hinter »E«) ist ein Vorzeichen  erlaubt.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 2E+3 ); }}
Protokoll
2000.0
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 2E-3 ); }}
Protokoll
0.002

Grenzen des Wertebereiches ⃗

Werte des Typs »double« können größer  als Werte des Typs »int« sein. Ihre Ungenauigkeit kann sich aber auch schon in den Stellen vor  dem Komma zeigen, wie in dem folgenden Beispiel.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 9_007_199_254_740_993. ); }}
Protokoll
9.007199254740992E15

Die Ausgabedarstellung »9.007199254740992E15« bedeutet ‹ 9,007199254740992 × 10¹⁵ ›, also ‹ 9007199254740992 ›.

»9_007_199_254_740_993.« und »9_007_199_254_740_992.« sind zwei verschiedene  Literale mit dem gleichen Wert.

Bei Zahlen bis zu «9_007_199_254_740_991.» (2⁵³-1, zirka 9×10¹⁵, 9 Billiarden) sind double-Werte aber genau, in dem Sinne, daß bis zu diesem Wert alle angegebenen double-Werte ohne Nachkommastellen auch mit genau demselben Wert ausgegeben werden, wie sie angegeben wurden, und sich umgekehrt von der Ausgabe auf den angegebenen Wert schließen läßt.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 9_007_199_254_740_991. ); }}
Protokoll
9.007199254740991E15

Damit kann der Datentyp ›double‹ doch noch größere ganze Zahlen korrekt darstellen als der Datentyp ›int‹.

Der größte Wert des Datentyps »long« beträgt »9_223_372_036_854_775_807L«. Dies sind 2⁶³-1, zirka 9×10¹⁸, also 9 Trillionen, somit noch zirka tausendmal mehr als der zuvor genannte Wert. Daher könne große long-Werte von ›double‹ nur noch näherungsweise  dargestellt werden.

java.lang.String

Ein Zeichenfolgenliteral hat den Typ ›java.lang.String‹.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "Alpha" ); }}
Protokoll
Alpha

Ein “string ” ist ein “character string ”, also – wörtlich – eine Kette (Verkettung) von Schriftzeichen, eine Zeichenkette  (Zeichenfolge).

Der Speicherbedarf einer Zeichenfolge besteht aus einer festen Anzahl von Bits (zirka 320) zuzüglich einer variablen Anzahl von Bits (zirka 16 pro Zeichen).

Ausgabedarstellung

Das folgende Programm gibt eine Darstellung der Zahl 12 aus und verwendet ein Literal »12« vom Typ ›int‹.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 12 ); }}
java.lang.System.out
12

Die Ausgabe des folgenden Programms läßt sich nicht von der Ausgabe des vorigen Programms unterscheiden. Das folgende Programm verwendet ein Literal »"12"« vom Typ ›java.lang.String‹.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "12" ); }}
java.lang.System.out
12

Ausgabedarstellungen lassen also keine  eindeutigen Rückschlüsse auf Werte und Typen zu.

Die Werte der beiden Ausdrücke »12« und »"12"« haben also unterschiedliche Datentypen (und es sind auch unterschiedliche Werte) aber beide Werte habe dieselbe Ausgabedarstellung.

Zwei  verschiedene Werte, aber eine  Ausgabedarstellung:
Dies illustriert den Unterschied zwischen den Begriffen „Wert“ und „Ausgabedarstellung“.

Auch die Werte der beiden Ausdrücke »2.0« und »"2.0"« haben unterschiedliche Datentypen (und es sind auch unterschiedliche Werte) aber beide Werte habe dieselbe Ausgabedarstellung, wie die beiden folgenden Programm zeigen.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 2.0 ); }}
Konsole
2.0
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "2.0" ); }}
Konsole
2.0

Typen in Java 

In Java  unterscheidet man zwischen elementaren Typen  und Referenztypen. Elementare Typen werden auch „primitive Typen“ genannt, dies ist also in Java  kein Schimpfwort, sondern ein Fachbegriff! Das Wort „primitiv“ bedeutet darin soviel wie „elementar“ oder „fundamental“.

Die Namen elementarer Typen  werden vollständig mit Kleinbuchstaben  geschrieben, die eigentlichen Namen von Referenztypen  enthalten in der Regel mindestens einen großen Buchstaben. Wir kennen bisher zwei elementare Typen und einen Referenztyp.

Elementare Typen
int
long

double
Referenztypen
java.lang.String

Zahlentypen (wie ›int‹, ›long‹ und ›double‹) werden auch „numerische Typen“ genannt.

Sowohl elementare Typen als auch Referenztypen sind Typen.

Das Typsystem von Java

Typen

^
|
.------------'------------.
| |

elementare Typen Referenztypen

Typen im Quelltext

Bis auf weiteres schreiben wir Typen nicht  in Programme hinein. Sie dienen uns lediglich zur Beschreibung  von Programmteilen.

»int« ist keine Abkürzung, sondern ein vollständiges Wort. Daher umfaßt die richtige Aussprache des Wortes »int« nur eine  Silbe und endet mit einem /t/: /ɪnt/ (wie das Ende der Aussprache des Wortes “print ”).

Übungsfragen

?   Literaltypen

Ein Literal, das mit einem Anführungszeichen »"« beginnt, hat den Typ ›java.lang.String‹; sonst hat es den Typ ›double‹, wenn es einen Punkt ».« oder ein »E« enthält, und andernfalls den Typ ›int‹.

Welchen Typ haben die folgenden Literale jeweils?

1
1.2
2E3
"2"

?   Aussprache *

Wie lautet die Aussprache von »int«?

Wie die von “print ”, nur ohne “pr ”.
Wie die von “integer ”.

Ergänzungen zu Typen in Java  *

Elementare Datentypen und Codes *

Der Typ eines Ausdrucks sagt der Java -Implementation im Falle eines elementaren Typs auch jeweils, welcher Code  zur internen Darstellung von Werten des Typs verwendet werden soll.

Bei einem Referenztyp kann die interne Darstellung hingegen durch das Programm  festgelegt werden. Die dazu nötige Vorgehensweise wird aber erst im Aufbaukurs  behandelt werden.

Im Falle des Typs »java.lang.String« wird die Darstellung durch ein Programm der Standardbibliothek  festgelegt. Da dieser Typ aber für Java  eine besondere Bedeutung hat, ist hier auch die Java -Implementation noch beteiligt.

Ergänzungen zu »double« Der größte ganzzahlige und genaue Wert *

Für Werte, deren Nachkommastellen alle ganz genau bestimmt sein sollen, wie beispielsweise Währungsbeträge, ist der Datentyp ›doublenicht  gedacht. Den Währungsbetrag von „1,68 Euro“ kann man daher besser als ganzzahligen Wert „168 Cents“ mit dem Datentyp ›int‹ abspeichern, jedoch kann es hier auch Probleme geben, falls der Betrag zu groß wird. Es gibt Techniken, welche auch die genaue Darstellung großer Währungsbeträge gestatten, die aber an dieser Stelle des Kurses noch nicht behandelt wurden.

Bei ganzen Zahlen bis zu 9,007,199,254,740,991 (2⁵³-1) sind double-Werte genau. In diesem Rahmen kann der Typ ›double‹ auch zur Darstellung großer ganzer Zahlen verwendet werden.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( 9_007_199_254_740_991. ); }}
transcript
9.007199254740991E15
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( 9_007_199_254_740_992. ); }}
transcript
9.007199254740992E15
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println( 9_007_199_254_740_993. ); }}
transcript
9.007199254740992E15

Ergänzungen zu ›double‹ Der größte Wert *

Das folgende Programm enthält eine Darstellung des größten double-Wertes.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 179769313486231570814527423731704356798070567525844996598917476803157260780028538760589558632766878171540458953514382464234321326889464182768467546703537516986049910576551282076245490090389328944075868508455133942304583236903222948165808559332123348274797826204144723168738177180919299881250404026184124858368. ); }}
Protokoll
1.7976931348623157E308

Da der größte double-Wert noch andere Literale hat, ergibt sich nicht sofort ein Fehler, wenn man das Literal noch etwas vergrößert (indem man »8.« durch »9.« ersetzt – dies ändert nichts am Wert des Ausdrucks!), aber das Literal in dem folgenden Programm ist dann auf jeden Fall zu groß.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 179769313486231580800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000. ); }}
Protokoll
Main.java:4: error: floating point number too large
( 179769313486231580800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000. ); }}
^
1 error

Zitate zu ›double‹ *

A floating-point literal (…) its type is double ”, JLS8, 3.10.2 Floating-Point Literals

Was ist ein Typ? *

Ein Typ (oder „Datentyp“) ist eine freie Entität eines Modells (das wir hier „Typmodell“ nennen).

Ein Typ ist nicht  mit seiner Schreibweise (wie »int«) gleichzusetzen, vielmehr ist er die Bedeutung  dieser Schreibweise – daher schreiben wir „›int‹“ für den Typ ›int‹. (Dies liegt daran, daß unterschiedliche  Schreibweise, wie »String« und »java.lang.String«, den gleichen  Typ bedeuten können; aber andererseits eine bestimmte Schreibweise, wie »String«, an unterschiedlichen Stellen eines Programms verschiedene  Typen bezeichnen kann.)

Das Typmodell gehört in Java  sowohl zum Quelltext-  als auch zum Laufzeitmodell.

Die oft gehörte Erklärung, derzufolge ein Typ eine Menge von Werten  sei, ist falsch, da es Gegenbeispiele dazu gibt. In Java  kann man Referenztypen beispielsweise oft gar nicht sinnvoll eine bestimmte Wertmenge zuordnen, außerdem gibt es Fälle, in denen Typen trotz gleicher Wertmenge als unterschiedlich  gelten. Richtig ist es, daß elementare Typen eine Menge von Werte besitzen.

Typen in der deutschen Sprache *

Man kann Typnamen auch als prädikative Adjektive gebrauchen, obwohl dies nicht besonders schön klingt: „Dieses Literal ist int.“ bedeutet „Dieses Literal hat den Typ ›int‹.“ Man kann Typnamen auch als Präfixoid gebrauchen: „int -Literal“ bedeutet „Literal mit dem Typ ›int‹“. Der Akkusativ Singular von „Typ“ im Sinne von „Typus“ lautet „Typ“ (nicht „Typen“ wie bei „Typ“ im Sinne von „Kerl, Bursche“).

Elementare Typen und Referenztypen *

Man kann sich die Unterscheidung zwischen elementare Typen  und Referenztypen  vorläufig in etwa folgendermaßen erklären.

Werte elementare Typen können oft direkt und schnell von einem Prozessor (Teil einer Implementation, Hardware) verarbeitet werden. Die Verarbeitung eines Wertes eines Referenztyps kann hingegen komplexer (und dadurch langsamer) sein; sie erfolgt oft durch Programme (Software).

Der für die Darstellung eines Wertes eines elementaren Typs benötigte Speicherplatz ist konstant (für jeden Wert eines Typs derselbe), während der Speicherplatz eines Wertes eines Referenztyps bei jedem Wert anders sein kann. Während alle int-Zahlen beispielsweise immer denselben Speicherplatz benötigen, hängt der Speicherplatzbedarf einer Zeichenfolge von ihrer Länge ab. Außerdem werden die elementaren Typen bereits durch die Programmiersprache (JLS ) definiert, während Referenztypen oft erst durch die Bibliothek (Java SE ) definiert werden. Der Programmierer kann selber neue Referenztypen definieren, aber keine neuen elementaren Typen.

Werte und ihre Textdarstellung *

Der Ausdruckrahmen gibt Textdarstellungen von Werten, nicht die Werte selber  aus.

Wir sprechen von der „Ausgabe einer Textdarstellung des Wertes «12» “, weil Werte im allgemeinen keine ausdruckbaren Zeichenfolgen sind. Eine ausgedruckte Zeichenfolge, wie »12«, ist also nicht ein Wert selber, sondern nur eine Darstellung  des Wertes durch einen Text. Beispielsweise kann der Wert «12.0» auch als «12.00» dargestellt werden, beides sind zwei verschiedene Textdarstellungen  desselben Wertes. Lesen oder Schreiben kann man nur Darstellungen von Werten, nicht die Werte selber.

Das Literal »12.0« und das Literal »12.00« haben beide denselben Wert «12.0» vom Datentyp ›double‹.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 12.0 ); }}
java.lang.System.out
12.0
Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 12.00 ); }}
java.lang.System.out
12.0

Die Ausgabedarstellung der Zahl «12.0» gleicht der Ausgabedarstellung der Zeichenfolge des Zeichenfolgenliterals »"12.0"«, obwohl intern beides verschiedene Werte sind: Die Zahl «12.0» ist ein Wert des Datentyps ›double‹, während die Zeichenfolge «"12.0"» den Datentyp ›java.lang.String‹ hat.

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( "12.0" ); }}
java.lang.System.out
12.0

Zur Vereinfachung kann man aber auch von der „Ausgabe eines Wertes “ sprechen, wenn man weiß, daß dabei nicht wirklich  der Wert selber, sondern nur eine Textdarstellung  des Wertes ausgegeben wird.

Vom Quelltext zur Ausgabedarstellung
12.00      12.0            "12.0"        Literal im Quelltext (Text)
| | |
'----.----' | Auswertung des Literals
| |
v v
Wert 12.0 Wert "12.0" gedachter Wert
Datentyp Datentyp (nicht unbedingt ein Text)
double java.lang.String
| |
'----------.----------'
|
| Darstellung des Wertes als Text
|
v
12.0 Text
Ausgabedarstellung

»int« ist nicht “integer ” *

Das Wort »int« sollte nicht  wie das englische Wort “integer ” ausgesprochen werden, da die übliche Aussprache gebildeter Programmierer wie am Ende der Aussprache von “print ” klingt.

Außerdem gibt es in Java  auch noch einen Datentyp, der wirklich »Integer« heißt. Wenn man das englische Wort “integer ” hört, würde man deswegen denken, daß jener Datentyp ›Integer‹ gemeint ist.

»int« hat auch eine andere Bedeutung als das englische Wort “integer ”. “integer ” heißt „ganzzahlig“ oder „eine ganze Zahl“, während »int« ein Datentyp der Programmiersprache Java  ist.

Beispielsweise ist der Wert des Literals »1.0« ganzzahlig, also auf englisch “integer ”, aber sein Typ ist nicht »int«. Genauso ist auch 9223372036854775807 eine ganze Zahl, also auf englisch “integer ”, aber dies ist kein Wert des Datentyps »int« (dafür ist diese Zahl zu groß).

Main.java
public final class Main
{ public static void main( final java.lang.String[] args )
{ java.lang.System.out.println
( 9_223_372_036_854_775_807 ); }}
Fehlermeldung
Main.java:32: error: integer number too large: 9223372036854775807
{ java.lang.System.out.println
( 9_223_372_036_854_775_807 ); }}
^
1 error
Fehlermeldung (Übersetzung)
Main.java:32: Fehler: ganze Zahl zu gross: 9223372036854775807
{ java.lang.System.out.println
( 9_223_372_036_854_775_807 ); }}
^
1 error

Seiteninformationen und Impressum   |   Mitteilungsformular  |   "ram@zedat.fu-berlin.de" (ohne die Anführungszeichen) ist die Netzpostadresse von Stefan Ram.   |   Eine Verbindung zur Stefan-Ram-Startseite befindet sich oben auf dieser Seite hinter dem Text "Stefan Ram".)  |   Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram. Schlüsselwörter zu dieser Seite/relevant keywords describing this page: Stefan Ram Berlin slrprd slrprd stefanramberlin spellched stefanram722248 stefan_ram:722248 Java|Literaltypen Stefan Ram, Berlin, and, or, near, uni, online, slrprd, slrprdqxx, slrprddoc, slrprd722248, slrprddef722248, PbclevtugFgrsnaEnz Erklärung, Beschreibung, Info, Information, Hinweis,

Der Urheber dieses Textes ist Stefan Ram. Alle Rechte sind vorbehalten. Diese Seite ist eine Veröffentlichung von Stefan Ram.
https://www.purl.org/stefan_ram/pub/java_ganze_zahlen