J'écris un petit code en J2ME. J'ai une classe avec une méthode setTableId(Short tableId)
. Maintenant, quand j'essaie d'écrire, setTableId(100)
cela donne une erreur de compilation. Comment puis-je définir la valeur courte sans déclarer une autre variable courte?
Lors de la définition de la Long
valeur, je peux utiliser setLongValue(100L)
et cela fonctionne. Alors, que L
signifie ici et quel est le caractère de Short
valeur?
Merci
java
literals
primitive-types
Mubashar
la source
la source
L
est juste un suffixe utilisé pour indiquer unlong
littéral.Réponses:
En Java, les littéraux entiers sont de type int par défaut. Pour d'autres types, vous pouvez le suffixe littéral avec une lettre insensible à la casse comme
L
,D
,F
spécifier une longue, double ou flottant, respectivement. Notez qu'il est courant d'utiliser des lettres majuscules pour une meilleure lisibilité.La spécification du langage Java ne fournit pas le même sucre syntaxique pour les types octets ou courts. Au lieu de cela, vous pouvez le déclarer comme tel en utilisant un casting explicite:
Dans votre
setLongValue(100L)
appel de méthode, vous n'avez pas nécessairement besoin d'inclure leL
suffixe car dans ce cas, le littéral int est automatiquement élargi à un long. C'est ce qu'on appelle l'élargissement de la conversion primitive dans la spécification du langage Java.la source
d
/D
fait undouble
etf
/F
fait un float!0
comme(short)0
pour contourner unepossible lossy conversion from int to short
erreur, même si 0 est un court.Il n'y a pas d'octet ou de littéral court. Vous devez diffuser en bref en utilisant
(short)100
la source
En général, vous pouvez simplement convertir la variable en un fichier
short
.Vous pouvez également rencontrer des problèmes comme celui-ci qui peuvent prêter à confusion. C'est parce que l'
+
opérateur les promeut à unint
Diffuser les éléments n'aidera pas:
Vous devez lancer l'expression:
la source
Vous pouvez utiliser
setTableId((short)100)
. Je pense que cela a été modifié dans Java 5 afin que les littéraux numériques attribués à byte ou short et à portée de la cible soient automatiquement supposés être le type de cible. Ces dernières JVM J2ME sont cependant dérivées de Java 4.la source