java - 如何指定一个常量是byte还是short?

标签 java

对于long数据类型,我可以在一个数字后面加上L,让编译器知道它是long。 byte和short呢?

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

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

最佳答案

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

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

仅当文字在要求的范围内时才允许隐式转换。如果不是,则需要进行类型转换;例如

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

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

您的例子是其中的另一个例子。


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

关于java - 如何指定一个常量是byte还是short?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8860948/

相关文章:

java - 当我使用自定义类加载器时出现 ClassCastException

java - Android 设备测试不再有效,过去是这样

java - (Java) 添加到计数器变量的代码

java - 我怎样才能解决jframe期间的java fatal error

java - 如何使用扫描仪输入逆波兰表示法计算器?

java - 重复 void 方法

java - 使用正则表达式进行密码验证

java - 从包中访问类

Java 泛型 2 向引用

java - 我想读取HDFS上的文件