我正在用 J2ME 编写一些代码。我有一个具有 setTableId(Short tableId)方法的类。现在,当我尝试编写 setTableId(100)时,它会出现编译时错误。如何在不声明另一个短变量的情况下设置 short 值?
setTableId(Short tableId)
setTableId(100)
当设置 Long值时,我可以使用 setLongValue(100L),它工作。那么,L在这里是什么意思,Short值的字符是什么?
Long
setLongValue(100L)
L
Short
谢谢
你可以使用 setTableId((short)100)。我认为这在 Java5中被改变了,所以分配给 byte 或 short 的数值文本和目标范围内的数值文本被自动假定为目标类型。不过,最新的 J2MEJVM 是从 Java4派生出来的。
setTableId((short)100)
没有字节或者短文字这样的东西。您需要使用 (short)100来强制转换为短文字
(short)100
在 Java 中,整数文本默认为 int 类型。对于其他类型,可以在文字后面加上不区分大小写的字母,如 L、 D、 F,以分别指定 long、 double 或 float。注意,为了提高可读性,通常使用大写字母。
D
F
Java 语言规范没有为 byte 或 short 类型提供相同的语法糖。相反,您可以使用显式强制转换将其声明为:
byte foo = (byte)0; short bar = (short)0;
在 setLongValue(100L)方法调用中,不一定要包含 L后缀,因为在这种情况下,int 文本会自动扩展为 long。这在 Java 语言规范中称为扩展原语转换。
一般情况下,您只需将变量强制转换为 short即可。
short
您还可能遇到这样的问题,这些问题可能会让您感到困惑。这是因为 +操作员将它们提升为 int
+
int
释放元素于事无补:
你需要表达这样的意思: