将方法参数表示为 "short" 原始类型

Denote method parameter as "short" primitive type

我有一个方法接受一个类型为 short 的参数。

public void doSomething(short value) {
   //DO STUFF
}

我可以这样称呼它:

short value = 3;
doSomething(value);

但不是另一个:

doSomething(3);

为什么?有没有办法表示此参数是 short 而不是 int

你可以这样称呼它:

doSomething((short)3);

如果不进行转换,3 将始终是一个 int 文字。

原因

public void doSomething(short value) {
   //DO STUFF
}

可以称为

short value = 3;
doSomething(value);

因为值已经是 short

当你这样称呼它时 doSomething(3); 3 被认为是整数,不能隐式转换为 short。

基本上 doSomething(3); 需要一个

public void doSomething(int value) {
   //DO STUFF
}

要使用的方法。
但是,您可以将 3 转换为 short 并可以将该方法调用为: doSomething((short)3);

在 Java 中,赋值右侧的算术表达式默认计算为 int。看看这个令人惊讶的例子:

short a = 1;
short b = 2;

short c = a + b; // Error!

您需要显式转换为short,如其他答案中已经提到的那样,或者更改方法的签名以接受int

值得一提的是spaceshort如果是局部变量,class变量甚至实例变量,因为在大多数系统中,变量地址是对齐的,我会简单地更改方法的签名以接受 int 而不会使事情复杂化。