我在网上看到一个问题,询问您是否获得了打印声明,
System.out.println(M.m(4.0, 5));
System.out.println(M.m(4, 5.0));
据我所知,double可以用作int,因此将打印第一个方法。即40.0
。
但是对于第二个打印声明,是否会使用相同的逻辑,并再次打印第一个方法? Java称第二个打印声明为60.0
。
public static double m(int a, int b) {
return a * b;
}
public static double m(double a, int b) {
return a * b * 2;
}
public static double m(double a, double b) {
return a * b * 3;
}
答案 0 :(得分:2)
实际上,对于第一次打印,将使用第二次重载,因为参数类型完全匹配:double和int。
对于第二次打印,将使用第三次重载,因为double不会自动提升为int。第二个参数可以从double启动的唯一方法是第三个重载 - 这将强制将第一个参数提升为double。
答案 1 :(得分:0)
由于只有一种方法接受double
作为第二个参数,因此第一个参数将被强制转换为double
,因此它将被称为M.m(4.0, 5.0)
,因此落入第三种方法。