Primitive Datentypen - Oracle Doc sagt, dass der Bereich long
in Java -9,223,372,036,854,775,808
zu 9,223,372,036,854,775,807
. Aber wenn ich so etwas in meiner Sonnenfinsternis mache
long i = 12345678910;
es zeigt mir " The literal 12345678910 of type int is out of range
" Fehler.
Es gibt 2 Fragen.
1) Wie initialisiere ich das long
mit dem Wert 12345678910
?
2) Sind alle numerischen Literale standardmäßig vom Typ int
?
java
long-integer
aamadmi
quelle
quelle
Long
- aufgrund von Auto-Boxing können Sie verwendenLong i = 12345678910L
, oderLong i = Long.valueOf(12345678910L)
für die Fälle, in denen Sie Auto-Boxing nicht verwenden können.Antworten:
L
:long i = 12345678910L;
.Übrigens: Es muss kein Großbuchstabe L sein, aber Kleinbuchstaben werden oft verwechselt
1
:).quelle
0x200000000L
0x20000000L
?0x20000000L
würde funktionieren, kann aber immer noch durchint
(eine 32-Bit-Ganzzahl) dargestellt werden,0x20000000
würde also genauso gut funktionieren.0x200000000L
durchbricht diese Grenze und macht das NachlaufenL
notwendig.Sie müssen das
L
Zeichen am Ende der Zahl einfügen, damit Java es als lang erkennt.Ja.
Siehe Primitive Datentypen mit der Angabe "Ein ganzzahliges Literal ist vom Typ lang, wenn es mit dem Buchstaben L oder l endet; andernfalls ist es vom Typ int."
quelle
Sie müssen
L
am Ende wie folgt Großbuchstaben hinzufügenGleiches gilt für float with
3.0f
Welches sollte Ihre beiden Fragen beantworten
quelle
Um lange zu initialisieren, müssen Sie "L" an das Ende anhängen.
Es kann entweder Groß- oder Kleinbuchstaben sein.
Alle numerischen Werte sind standardmäßig
int
. Selbst wenn Sie eine Operationbyte
mit einer beliebigen Ganzzahl ausführen ,byte
wird diese zuerst hochgestuftint
und dann werden alle Operationen ausgeführt.Versuche dies
Sie erhalten eine Fehlermeldung, da dies
2
standardmäßig der Fall istint
.Daher versuchen Sie, sich
byte
mit zu multiplizierenint
. Daher wird das Ergebnis typisiert,int
dem es nicht zugewiesen werden kannbyte
.quelle