设置短值Java

问题描述 投票:89回答:4

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

设置Long值时,我可以使用setLongValue(100L),它的工作原理。那么,L在这里意味着什么,以及Short价值的特征是什么?

谢谢

java literals primitive-types
4个回答
149
投票

在Java中,整数文字的类型为int,除非它们以字母'L'或'l'为后缀(首选L是优选的,因为小写L很难与数字1区分)。如果以L为后缀,则文字的类型为long。

后缀在Java语言规范中没有任何特殊名称。任何其他整数类型都没有后缀。因此,如果您需要短文本或字节文字,则必须将它们转换为:

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

在setLongValue(100L)中,您不必必须包含L后缀,因为在这种情况下,int literal会自动扩展为long。这在Java语言规范中称为扩展原语转换。


30
投票

没有字节或短文字这样的东西。你需要使用(short)100来施放


8
投票

你可以使用setTableId((short)100)。我认为这在Java 5中已经改变,因此分配给字节或短的并且在目标范围内的数字文字被自动假定为目标类型。最新的J2ME JVM源自Java 4。


1
投票

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

您也可能遇到这样的问题,这些问题可能令人困惑。这是因为+操作员将它们推广到int

enter image description here

投射元素无济于事:

enter image description here

你需要强制转换表达式:

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.