web-dev-qa-db-fra.com

Définition de la valeur courte Java

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

94
Mubashar

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.

149
Lauri

Il n'y a pas d'octet ou de littéral court. Vous devez lancer un court-métrage en utilisant (short)100

30
er4z0r

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.

8
Lawrence Dol

Généralement, vous pouvez simplement convertir la variable pour devenir un short.

Vous pouvez également avoir des problèmes comme celui-ci qui peuvent être déroutants. C'est parce que le + l'opérateur les promeut en int

enter image description here

Couler les éléments ne va pas aider:

enter image description here

Vous devez lancer l'expression:

enter image description here

1
matt burns