Ich schreibe einen kleinen Code in J2ME. Ich habe eine Klasse mit einer Methode setTableId(Short tableId)
. Wenn ich jetzt versuche zu schreiben setTableId(100)
, gibt es einen Fehler bei der Kompilierung. Wie kann ich den Short-Wert einstellen, ohne eine andere Short-Variable zu deklarieren?
Beim Einstellen des Long
Wertes kann ich verwenden setLongValue(100L)
und es funktioniert. Also, was L
bedeutet hier und was ist der Charakter für Short
Wert?
Vielen Dank
java
literals
primitive-types
Mubashar
quelle
quelle
L
ist nur ein Suffix, das einlong
Literal angibt .Antworten:
In Java sind Ganzzahlliterale standardmäßig vom Typ int. Für einige andere Arten, können Sie die wörtliche mit Groß- und Kleinschreibung Buchstaben wie Suffix
L
,D
,F
eine lange, Doppel-, oder Schwimmer zu spezifizieren sind. Beachten Sie, dass es zur besseren Lesbarkeit üblich ist, Großbuchstaben zu verwenden.Die Java-Sprachspezifikation bietet nicht den gleichen syntaktischen Zucker für Byte- oder Kurztypen. Stattdessen können Sie es mit explizitem Casting als solches deklarieren:
In Ihrem
setLongValue(100L)
Methodenaufruf müssen Sie nicht unbedingt dasL
Suffix einfügen, da in diesem Fall das int-Literal automatisch auf ein langes erweitert wird. Dies wird in der Java-Sprachspezifikation als Erweiterung der primitiven Konvertierung bezeichnet.quelle
d
/D
macht eindouble
undf
/F
macht ein Float!0
als(short)0
eine bekommen umpossible lossy conversion from int to short
Fehler, auch wenn 0 ein kurz ist.Es gibt kein Byte oder kurzes Literal. Sie müssen zu kurz mit verwenden
(short)100
quelle
Im Allgemeinen können Sie die Variable einfach in a umwandeln
short
.Sie können auch solche Probleme bekommen, die verwirrend sein können. Dies liegt daran, dass der
+
Bediener sie zu einem befördertint
Das Casting der Elemente hilft nicht:
Sie müssen den Ausdruck umwandeln:
quelle
Sie können verwenden
setTableId((short)100)
. Ich denke, dies wurde in Java 5 geändert, sodass numerische Literale, die Byte oder Kurzschluss zugewiesen sind und sich innerhalb des Bereichs für das Ziel befinden, automatisch als Zieltyp angenommen werden. Die neuesten J2ME-JVMs sind jedoch von Java 4 abgeleitet.quelle