以下方法接受三个参数,类型为byte,int,int
。该方法被另一个方法调用,但出现了编译错误,提示该方法参数不适用于int,int,int
。默认情况下,不识别byte
参数,需要进行显式转换。
public double subtractNumbers(byte arg1,int arg2,int arg3) {
double sum=arg1+arg2+arg3;
return sum;
}
现在我们需要在一个方法中调用另一个方法,代码如下:
public void call(){
subtractNumbers(15,16,17); /*Compile error,but 15 is in byte acceptable
range of -128 to 127 */
}
如果我将上面的调用更改为
subtractNumbers((byte)15,16,17);
,它可以正常工作。当我声明一个变量
byte c=15
时,它被接受,但是当15被传递给一个byte参数时,为什么会出现编译错误?
int
是byte、short、int、long
的默认字面值,那么为什么byte c=15
可以被接受而方法参数却不能?提前感谢您的帮助。
subtractNumbers
方法,这种情况下,subtractNumber(15,16,17)
会调用第二个方法。 - Maurice Perry(byte) 15
和byte c = 15
,您将此int
值向下转换为byte
,因此不会出现编译错误。 - benjamin c