在Java

时间:2015-12-12 03:16:58

标签: java methods

我们说我有两种方法:

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

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

如果我打电话给总和,就像这样:sum(2, 3) 第一个方法将被执行

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

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

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

2 个答案:

答案 0 :(得分:4)

编译器会将int变为double,调用第二个方法因为,int可以被类型化为double,但反之亦然。

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

总而言之,当你调用方法而没有对int进行类型转换时,这样做:

 sum(int, double);

实际上是转换为:

 sum(double, double);

要避免这种情况,必须将int作为int进行类型转换。

答案 1 :(得分:2)

因为,整数可以在Math中作为浮点数字。 所以,sum(3,2.5) - 这里值得方法签名是sum(double, double)