如何指定常量是字节还是短?

时间:2012-01-14 08:01:14

标签: java

对于long数据类型,我可以用L后缀一个数字,以使编译器知道它很长。字节和短字怎么样?

作为动机,以下产生类型不匹配错误:

List<Short> a = Arrays.asList(1, 2, 3, 4);

3 个答案:

答案 0 :(得分:17)

您实际谈论的是整数文字1)与长文字1L)。 Java中实际上没有短文本或字节文字。但通常并不重要,因为存在从整数文字到类型byteshortchar的隐式转换。因此:

final byte one = 1;  // no typecast required.

仅当文字在所需范围内时才允许隐式转换。如果不是你需要一个类型演员; e.g。

final byte minusOne = (byte) 255;  // the true range of byte is -128 .. +127

还有其他需要进行显式转换的情况;例如消除方法重载的歧义,或强制表达式中的特定解释。在这种情况下,您需要使用强制转换进行转换。

你的例子是另一个案例。


但最重要的是,没有用于表达byteshort文字的Java语法。

答案 1 :(得分:5)

It's done automatically for you at the point of use

  

如果将int literal分配给short或byte并且它的值是   在合法范围内,文字被假定为短或字节。

答案 2 :(得分:0)

例如:

public static final byte CURRENCY_SYMBOL = 26;

public static final short MAX_VALUE = 3276;