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

use*_*414 13 java

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

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

List<Short> a = Arrays.asList(1, 2, 3, 4);
Run Code Online (Sandbox Code Playgroud)

Ste*_*n C 17

你实际谈论的是整数文字(1)与长文字(1L).Java中实际上没有短文本或字节文字.但它通常无关紧要,因为存在从整数文字到类型的隐式转换byte,short以及char.从而:

final byte one = 1;  // no typecast required.
Run Code Online (Sandbox Code Playgroud)

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

final byte minusOne = (byte) 255;  // the true range of byte is -128 .. +127
Run Code Online (Sandbox Code Playgroud)

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

你的例子是另一个案例.


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

  • "它没关系" - 如果你试图将文字用作方法或构造函数的参数,它会这样做.:( (2认同)
  • @yshavit - 他总是可以*浮动*语言增强的想法,我会给它*成功的几率. (2认同)

Joa*_*son 5

它在使用时自动完成

如果将int literal分配给short或byte并且其值在合法范围内,则假定文字为short或byte.