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

时间:2015-04-21 08:51:09

标签: java primitive-types

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

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

我可以这样称呼它:

short value = 3;
doSomething(value);

但不是另一个:

doSomething(3);

为什么呢?有没有办法表明这个参数是short而不是int

3 个答案:

答案 0 :(得分:5)

您可以这样称呼它:

doSomething((short)3);

如果没有强制转换,3将永远是一个int literal。

答案 1 :(得分:2)

原因

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

可以称为

short value = 3;
doSomething(value);

原因值已为short

当你像doSomething(3);那样调用它时,3被认为是整数,不能隐式地变为短暂。

基本上doSomething(3);需要

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

方法。
但是你可以将3转换为short并且可以将方法调用为: doSomething((short)3);

答案 2 :(得分:2)

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

short a = 1;
short b = 2;

short c = a + b; // Error!

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

值得一提的是,就空间而言,short占用与int相同的空间,如果它们是局部变量,类变量甚至实例变量,因为在大多数系统中,变量地址是对齐,我只是改变方法的签名来接受int,而不会使事情复杂化。