我在java中做了一个关于重载,覆盖和接口的赋值。 其中一个部分要求我创建重载方法,包括short,int,float和double。这些方法只需要对数字求和即可。
这就是我被困的地方:
public short sum(short x, short y)
{
System.out.println("I'm method on line 10");
return x+y;
}
我有这个方法,eclipse通过建议我做一个(int)类型转换来保持标记。如果我这样做,就会破坏这项任务的目的。所以在做了一些谷歌搜索之后,我写了这个:
public short sum(short x, short y)
{
System.out.println("I'm method on line 10");
short t = (short)(x+y);
return t;
}
在我的main方法中,我创建了一个对象:
public static void main(String[] args)
{
OverloadingSum obj1 = new OverloadingSum();
System.out.println(obj1.sum(3,3));
}
所以,当我运行它时,它告诉我它使用int sum(int x,int y)方法作为值(3,3)而不是我希望它使用的短和方法。我的问题是我可以测试哪些数字,以便调用short方法而不是int方法。
答案 0 :(得分:2)
为此,您可以将参数显式转换为short
以强制调用short
方法。
例如,更改:
System.out.println(obj1.sum(3,3));
为:
System.out.println(obj1.sum((short) 3,(short) 3));
答案 1 :(得分:1)
obj1.sum(3,3)
您需要投射值:
obj1.sum((short)3,(short)3)
或使用变量:
short v1 = 3;
short v2 = 3;
// ...
... obj1.sum(v1,v2)...
答案 2 :(得分:0)
类型转换,使用:
public static void main(String[] args)
{
OverloadingSum obj1 = new OverloadingSum();
System.out.println(obj1.sum((short)3,(short)3));
}
整数文字隐式具有int类型,并且从int转换为byte或short可能会丢失信息,因此需要显式转换。
答案 3 :(得分:0)
您可以尝试这样的事情
public static void main(String[] args) {
short x=3;
short y=3;
addShort(x,y);
}
public static void addShort(short a,short b)
{
short c=(short)(a+b);
}
除此之外,您需要在传递它们时显式转换
addShort((short) 3,(short)3);