【问题标题】:How can you call a method with short parameters? [duplicate]如何调用短参数的方法? [复制]
【发布时间】:2015-11-18 06:29:28
【问题描述】:

我正在用 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));
}

所以,当我运行它时,它会告诉我它对值 (3,3) 使用了 int sum(int x, int y) 方法,而不是我希望它使用的 short sum 方法。我的问题是我可以测试哪些数字以便调用 short 方法而不是 int 方法。

【问题讨论】:

  • 例如使用Short.valueOf("3")(但使用short通常是个坏主意)
  • @RC。没有和没有。不需要使用字符串字面量,就是浪费,这不是实例化Short对象的问题。

标签: java methods overloading short


【解决方案1】:

为此,您可以将参数显式转换为shorts 以强制调用short 方法。

例如更改:

System.out.println(obj1.sum(3,3));

到:

System.out.println(obj1.sum((short) 3,(short) 3));

【讨论】:

  • 我想这是一种方法,谢谢你的帮助。
【解决方案2】:
obj1.sum(3,3)

您需要转换值:

obj1.sum((short)3,(short)3)

或使用变量:

short v1 = 3;
short v2 = 3;
// ...
... obj1.sum(v1,v2)...

【讨论】:

    【解决方案3】:

    传递参数时需要类型转换,使用:

    public static void main(String[] args) 
    {
    OverloadingSum obj1 = new OverloadingSum();     
    System.out.println(obj1.sum((short)3,(short)3));
    }
    

    整数文字隐含地具有 int 类型,从 int 转换为 byte 或 short 可能会丢失信息,因此需要显式转换。

    【讨论】:

    • 不错!在我做之前 2 秒发布了相同的答案 =)
    • 传递数字文字参数时需要。
    【解决方案4】:

    你可以试试这样的

    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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-08-19
      • 2022-01-19
      • 2023-01-23
      • 2018-05-12
      • 2012-04-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多