对于long数据类型,我可以在一个数字后面加上L,让编译器知道它是long。 byte和short呢?
作为动机,以下会产生类型不匹配错误:
List<Short> a = Arrays.asList(1, 2, 3, 4);
最佳答案
您实际谈论的是整数 literal ( 1
) 与长 literal ( 1L
).在 Java 中实际上没有短字面量或字节字面量这样的东西。但它通常并不重要,因为存在从整数文字到类型byte
、short
和char< 的隐式转换
。因此:
final byte one = 1; // no typecast required.
仅当文字在要求的范围内时才允许隐式转换。如果不是,则需要进行类型转换;例如
final byte minusOne = (byte) 255; // the true range of byte is -128 .. +127
还有其他情况需要显式转换;例如消除方法重载的歧义,或强制表达式中的特定解释。在这种情况下,您需要使用强制转换来进行转换。
您的例子是其中的另一个例子。
但最重要的是,没有用于表达byte
或short
文字的Java 语法。
关于java - 如何指定一个常量是byte还是short?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860948/