分析如下代码: public class Test { public static void main(String[] args) { System.out.println(max(1, 2)); } public static double max(int num1, double num2) { System.out.println("max(int, double) is invoked"); if (num1 > num2) return num1; else return num2; } public static double max(double num1, int num2) { System.out.println("max(double, int) is invoked"); if (num1 > num2) return num1; else return num2; } } A. 程序运行并输出 max(int, double) is invoked 2 B. 程序运行并输出 max(double, int) is invoked 2 C. 程序运行并输出 max(int, double) is invoked 2.0 D. 程序编译错误,因为编译器无法判断该调用哪个max方法。
时间: 2024-02-14 13:25:45 浏览: 70
Java中static、this、super、final用法.docx
根据代码逻辑,`max(1, 2)`的参数类型分别是`int`和`int`,而在`max`方法中有两个重载的版本,一个是`max(int, double)`,另一个是`max(double, int)`。
根据Java方法重载的规则,编译器会选择最匹配的方法进行调用。在这种情况下,可以将`int`类型隐式转换为`double`类型,因此更匹配的方法是`max(double, int)`。
所以,正确的答案是B. 程序运行并输出
max(double, int) is invoked
2.
阅读全文