Estoy escribiendo un pequeño código en J2ME. Tengo una clase con un método setTableId(Short tableId)
. Ahora, cuando intento escribir setTableId(100)
, da un error de tiempo de compilación. ¿Cómo puedo establecer el valor corto sin declarar otra variable corta?
Al establecer el Long
valor que puedo usar setLongValue(100L)
y funciona. Entonces, ¿qué L
significa aquí y cuál es el Short
valor del carácter ?
Gracias
java
literals
primitive-types
Mubashar
fuente
fuente
L
es solo un sufijo que se usa para indicar unlong
literal.Respuestas:
En Java, los literales enteros son de tipo int por defecto. Para algunos otros tipos, puede agregar al literal como sufijo una letra que no distinga entre mayúsculas y minúsculas
L
, comoD
,F
para especificar long, double o float, respectivamente. Tenga en cuenta que es una práctica común utilizar letras mayúsculas para una mejor legibilidad.La especificación del lenguaje Java no proporciona el mismo azúcar sintáctico para bytes o tipos cortos. En su lugar, puede declararlo como tal mediante la conversión explícita:
En la
setLongValue(100L)
llamada al método, no es necesario que incluya elL
sufijo porque en este caso el literal int se amplía automáticamente a un long. Esto se denomina conversión primitiva de ampliación en la Especificación del lenguaje Java.fuente
d
/D
hace adouble
yf
/F
hace flotar!0
como(short)0
para moverse por unpossible lossy conversion from int to short
error, a pesar de que 0 es un corto.No existe un byte o un literal corto. Necesitas lanzar a corto usando
(short)100
fuente
Por lo general, puede convertir la variable en un
short
.También puede tener problemas como este que pueden resultar confusos. Esto se debe a que el
+
operador los promueve aint
Lanzar los elementos no ayudará:
Necesitas lanzar la expresión:
fuente
Puede utilizar
setTableId((short)100)
. Creo que esto se cambió en Java 5 para que los literales numéricos asignados a bytes o cortos y dentro del rango para el objetivo se asuma automáticamente como el tipo de objetivo. Sin embargo, las últimas JVM J2ME se derivan de Java 4.fuente