java - Java中的重载方法调用

标签 java methods

假设我有 2 个这样的方法:

1    public int sum(int a, int b) { return a + b; }

2    public double sum(double a, double b) { return a + b; }

如果我调用 sum,像这样:sum(2, 3) 第一个方法会被执行

如果我调用 sum,像这样:sum(2.5,3.5)执行第二个方法

但是,如果我这样调用 sum:sum(2.5,3),会执行第二个方法,但不会执行第一个方法,这是为什么?

此外,如果这样调用 sum 是否也会出现这种情况:sum(3,2.5)

最佳答案

编译器会将 int 转换为 double,调用第二个方法 这是因为,int 可以类型转换为 double,但反之则不行。

这将适用于右侧的所有原始类型。 你不能向左移动,除非你显式地进行类型转换,而你并没有这样做。如果你想执行第一个方法,你可以将类型转换为一个 int,这样它就不会执行'扩大成双。 Java 对这些事情非常具体:

因此,总而言之,当您调用方法而不对 int 进行类型转换时,这样做:

 sum(int, double);

实际上是这样翻译的:

 sum(double, double);

为避免这种情况,您必须将 int 类型转换为 int。

关于java - Java中的重载方法调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34235850/

相关文章:

perl - 像自动死亡一样死去

java - 继承Java super.print()不返回值

javascript - 方法作为原型(prototype)中的属性

java - 找不到合适的构造函数 (Java)

java - new relic支持socks5代理类型吗?

java - 代理 JMeter 连接错误

Java "for"基于字符串的语句迭代

java - 比较器比较内部列表字段

java - 从 List<String> 创建 HashMap

java - 实体类方法中的数学逻辑问题