对于long数据类型,我可以用L后缀一个数字,以使编译器知道它很长。字节和短字怎么样?
作为动机,以下产生类型不匹配错误:
List<Short> a = Arrays.asList(1, 2, 3, 4);
答案 0 :(得分:17)
您实际谈论的是整数文字(1
)与长文字(1L
)。 Java中实际上没有短文本或字节文字。但通常并不重要,因为存在从整数文字到类型byte
,short
和char
的隐式转换。因此:
final byte one = 1; // no typecast required.
仅当文字在所需范围内时才允许隐式转换。如果不是你需要一个类型演员; e.g。
final byte minusOne = (byte) 255; // the true range of byte is -128 .. +127
还有其他需要进行显式转换的情况;例如消除方法重载的歧义,或强制表达式中的特定解释。在这种情况下,您需要使用强制转换进行转换。
你的例子是另一个案例。
但最重要的是,没有用于表达byte
或short
文字的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;