为了账号安全,请及时绑定邮箱和手机立即绑定

如何在 Java 中打印不同的参数多态方法?

如何在 Java 中打印不同的参数多态方法?

慕码人2483693 2022-10-12 15:40:40
我已经声明了三个具有相同名称“sum”的方法,目的是简单演示参数多态性的工作原理,但我不知道如何分别调用每个方法,这是我想要帮助的。我如何调用每种方法并知道我在调用哪个方法?我尝试了一个简单System.out.println(sum(2,3));的返回 5 但如果我将其中一个数字设置在整数范围之外,我会收到错误消息:Exception in thread "main" java.lang.Error: Unresolved compilation problem:    The literal 3000000000 of type int is out of range    at codeTester.main.main(main.java:30)/*Author: Maxim WilmotCreated:   18/04/2019Polymorphism - Parametric*/package codeTester;public class main {    //integer between -2 147 483 648 and 2 147 483 647    public static int sum(int a, int b) {        return a + b;    }    //decimal between -3,4.10^38 and 3,4.10^38    public static float sum(float a, float b) {        return a + b; //    }    //decimal between -1,7.10^308 and 1,7.10^308    public static double sum(double a, double b) {        return a + b;    }     public static void main(String args[]) {         System.out.println(sum(2,3)); //call a method, which one ?     }}我想要 3 个不同的输出,每种方法 1 个。那可能吗 ?可能为每种方法计算不同的数字?谢谢你的帮助,马克斯。
查看完整描述

1 回答

?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

方法重载(编译时多态性)基于方法签名(即方法名称、参数类型和参数顺序)在 java 中工作。

在您的情况下,当文字值为 3000000000 时,该值位于长数据范围内。

在 java 中,如果你声明的文字值大于 2 147 483 647,那么你应该在文字后面加上字母' l '或' L ' 。

因此,将您的参数作为 3000000000L 或 3000000000l 与另一个 int 参数一起传递,然后将调用浮点参数方法(这将通过参数的向上转换来完成)

对于原始类型,向上转换的工作方式如下。

字节 -> 短 -> 整数 -> 长 -> 浮点 -> 双

对于下面的行

System.out.println(sum(3000000000L, 3));

你会得到答案

3.0E9

此输出将由 float 参数类型方法生成。


查看完整回答
反对 回复 2022-10-12
  • 1 回答
  • 0 关注
  • 148 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号