136

我正在用 J2ME 编写一些代码。我有一个方法类setTableId(Short tableId)。现在,当我尝试编写时setTableId(100),它会给出编译时错误。如何在不声明另一个短变量的情况下设置短值?

设置Long值时,我可以使用setLongValue(100L)它并且它可以工作。那么,L这里的意思是什么,价值的特征是Short什么?

谢谢

4

4 回答 4

214

在 Java 中,整数字面量默认为 int 类型。对于其他一些类型,您可以在文字后面加上不区分大小写的字母,如L, D,F以分别指定 long、double 或 float。请注意,为了提高可读性,通常使用大写字母。

Java 语言规范没有为字节或短类型提供相同的语法糖。相反,您可以使用显式强制转换来声明它:

byte foo = (byte)0;
short bar = (short)0;

在您的setLongValue(100L)方法调用中,您不必一定包含L后缀,因为在这种情况下,int 文字会自动加宽为 long。这在 Java 语言规范中称为加宽原语转换。

于 2010-02-19T08:46:25.097 回答
39

没有字节或短文字之类的东西。您需要使用(short)100

于 2010-02-19T08:39:31.067 回答
19

通常,您可以将变量转换为short.

您也可能会遇到这样的问题,这些问题可能会令人困惑。这是因为+运营商将它们提升为int

在此处输入图像描述

铸造元素无济于事:

在此处输入图像描述

您需要转换表达式:

在此处输入图像描述

于 2019-03-13T10:40:08.167 回答
10

您可以使用setTableId((short)100). 我认为这在 Java 5 中已更改,因此分配给 byte 或 short 且在目标范围内的数字文字被自动假定为目标类型。不过,最新的 J2ME JVM 是从 Java 4 派生的。

于 2010-02-19T08:37:56.717 回答