将方法参数表示为 "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
而不会使事情复杂化。
我有一个方法接受一个类型为 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
而不会使事情复杂化。