Java方法重载与可变参数:解析代码输出结果
Java方法重载与可变参数:解析代码输出结果
以下代码片段展示了一个常见的Java代码问题,涉及方法重载和可变参数的概念:javaclass A { public String doit(int x, int y) { return 'a'; }
public String doit(int... vals) { return 'b'; }}
public class Main { public static void main(String[] args) { A a = new A(); System.out.println(a.doit(4, 5)); }}
问题: 以上代码的输出结果是什么?
答案: 代码将输出 'a'。
解析:
-
方法重载: 类A包含两个名为'doit'的方法,但参数列表不同。这就是方法重载,允许一个类拥有多个同名但参数不同的方法。
-
可变参数: 'doit(int... vals)' 方法使用可变参数,可以接受任意数量的int类型参数。
-
方法调用与匹配: 当调用
a.doit(4, 5)时,Java编译器会尝试找到最匹配的方法。由于传递了两个int类型参数,因此精确匹配 'doit(int x, int y)' 方法。 -
优先级: 尽管可变参数方法可以接受任意数量的参数,但在这种情况下,精确匹配的方法优先级更高。
-
输出结果: 因此,程序执行 'doit(int x, int y)' 方法,返回字符串 'a' 并打印到控制台。
总结: 这段代码突出了Java方法重载和可变参数的概念。理解编译器如何选择要调用的方法对于编写高效且可预测的Java代码至关重要。
原文地址: http://www.cveoy.top/t/topic/2Ux 著作权归作者所有。请勿转载和采集!