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 définir la valeur courte sans déclarer une autre variable courte?
Lorsque vous définissez la valeur Long
, je peux utiliser setLongValue(100L)
et cela fonctionne. Alors, que signifie ici L
et quel est le caractère de la valeur Short
?
Merci
Dans Java sont de type int, sauf s'ils sont suffixés de la lettre "L" ou "l" (la majuscule est préférable car la minuscule est difficile à distinguer du nombre 1). Si suffixé avec L, les littéraux sont de type long.
Le suffixe n'a pas de nom spécial dans la Java Spécification de langage. Il n'y a pas non plus de suffixe pour les autres types d'entiers. Donc, si vous avez besoin d'un littéral court ou octet, vous devez le transtyper:
byte foo = (byte)0;
short bar = (short)0;
Dans setLongValue (100L), vous n'avez pas nécessairement à inclure le suffixe L car, dans ce cas, le littéral int est automatiquement élargi à long. Ceci s'appelle l'élargissement de la conversion des primitives dans la Java Language Specification.
Il n'y a pas d'octet ou de littéral court. Vous devez lancer un court-métrage en utilisant (short)100
Vous pouvez utiliser setTableId((short)100)
. Je pense que cela a été modifié dans Java 5 de sorte que les littéraux numériques affectés à octet ou à court et dans la plage de la cible soient automatiquement considérés comme étant le type de cible. Les dernières JVM J2ME sont toutefois dérivées de Java 4.