Java:必须施放简短,不能用速记'S'

时间:2015-06-11 03:02:41

标签: java casting java-7 short

我试图调用一个需要短值的函数。以下作品:

i.setDamage((short) 10);

然而,这不是:

i.setDamage(10S);

根据我使用的IDE,这应该可行。为什么不呢?我正在使用Maven和Java 7。

3 个答案:

答案 0 :(得分:4)

根据Java Language Specification, Section 3.10.1,整数文字的唯一整数类型后缀为L(或小写l)。

  

如果整数文字后缀为ASCII字母L或l(ell),则其长度为long;否则它的类型为int(§4.2.1)。

     

后缀L是首选,因为字母l(ell)通常很难与数字1(一)区分开来。

你只需坚持演员。 (尽管如果值在范围内,您可以在没有强制转换的情况下使用整数文字。)

答案 1 :(得分:0)

根据Java语言,long值只能保留L的后缀。

参见

Java Primitive Data types

答案 2 :(得分:0)

JAVA不为S提供sshort等后缀。您需要使用short转换为(short)100

可能的值是

int num = 20; //Decimal
int num = 020; //octal
int num = 0x20; //Hexadecimal
int num = 0b1010; //binary
long num = 563L; //long

在JDK 7中,您可以在一个整数文字中嵌入一个或多个下划线,如

int num = 19_90;