Java-L-Nummer (lang) Spezifikation
Scheint es, dass, wenn Sie geben eine Zahl in Java, der compiler automatisch liest es als eine ganze Zahl, die ist, warum, wenn Sie (lange) 6000000000 (nicht im integer-Bereich) es wird sich beschweren, dass 6000000000 ist keine ganze Zahl. Um dies zu korrigieren, musste ich angeben, 6000000000L. Ich habe gelernt, über diese Spezifikation.
Gibt es andere Zahl von Vorgaben wie für short, byte, float, double? Wie es scheint, diese wäre gut zu haben, weil (wie ich vermute) könntest du die Anzahl angeben, den Sie eingeben, ist ein kurzes java würde nicht haben, um Sie zu wirken - das ist eine Vermutung, korrigiert mich wenn ich falsch bin. Ich würde normalerweise suchen diese Frage mich selbst, aber ich weiß nicht, was diese Art von Anzahl Spezifikation auch genannt wird.
InformationsquelleAutor der Frage jbu | 2009-04-20
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gibt es bestimmte Suffixe für
long
(z.B.39832L
),float
(z.B.2.4f
) unddouble
(z.B.-7.832d
).Wenn es kein suffix, und es ist ein integraler Typ (z.B.
5623
), es wird davon ausgegangen, dass eineint
. Wenn es nicht integraler Typ (z.B.3.14159
), es wird davon ausgegangen, dass eindouble
.In allen anderen Fällen (
byte
short
char
), müssen Sie die Besetzung als gibt es keine spezifische suffix.Die Java-Spezifikation ermöglicht sowohl groß-und Kleinschreibung Suffixe, aber die Großbuchstaben-version für
long
s ist bevorzugt, da der Obere FallL
ist weniger leicht zu verwechseln mit einer Ziffer1
als der untere Falll
.Sehen die JLS Abschnitt 3.10 für die blutigen details (siehe die definition von
IntegerTypeSuffix
).InformationsquelleAutor der Antwort Simon Nickerson
Ich hoffe, dass Sie nicht Verstand eine leichte Tangente, aber dachte, dass Sie vielleicht interessiert sein, zu wissen, dass neben
F
(für Schwimmer)D
(für double) undL
(für lange), ein Vorschlag wurde gemacht hinzufügen Suffixe fürbyte
undshort
—Y
undS
beziehungsweise. Dies würde beseitigen die Notwendigkeit zu werfen, um bytes bei der Verwendung von literal-syntax für byte (oder kurz) arrays. Sie zitierte Beispiel aus dem Vorschlag:Joe Darcy ist die überwachung der Projekt-Münze für Java 7 und in seinem blog wurde eine einfache Möglichkeit zu verfolgen, diese Vorschläge.
InformationsquelleAutor der Antwort erickson
Diese sind Literale und sind beschrieben in Abschnitt 3.10 der Sprache Java spec.
InformationsquelleAutor der Antwort McDowell
Standardmäßig alle ganzzahligen primitiven Datentypen (byte, short, int, long) werden so behandelt, als int - Typ durch den java-compiler. Für byte und kurzeso lange, als Wert zugewiesen, um Sie in Ihrem Sortiment, ist es kein problem, und kein suffix erforderlich. Wenn der Wert zugewiesen byte und kurze überschreitet Ihre Palette, explizite Typumwandlung erforderlich ist.
Ex:
überwinden führen Sie die Typumwandlung.
Im Falle von long-Datentyp, der es akzeptieren kann, der integer-Wert ohne jede Hektik. Nehmen wir an, wir ordnen Sie wie
in diesem Fall kein suffix wie L/l erforderlich. Durch den Standardwert 2147483647 ist als durch den java-compiler ist der Typ int. Interne Typumwandlung erfolgt durch compiler und int auto gefördert zu Lange geben.
Hier müssen wir-suffix wie L behandeln die wörtliche 2147483648 als long-Typ durch den java-compiler.
so endlich
InformationsquelleAutor der Antwort Utpal Kumar
Da die Analyse von literalen passiert zur compile-Zeit, das ist absolut irrelevant in Bezug auf die Leistung. Der einzige Grund, dass
short
undbyte
Suffixe wäre schön ist, dass es führt zu kompakteren code.InformationsquelleAutor der Antwort Michael Borgwardt
Betrachten:
versus
Nun würde man erwarten, dass die Mühe code-Fragmente geben den gleichen Wert an variable
l
. Also brauchen wir den Ausdruck aufint
Literale zu tun alsint
s.InformationsquelleAutor der Antwort Tom Hawtin - tackline