关于重载函数,我还没有完全理解 Java 如何确定在运行时执行哪个函数。假设我们有一个像这样的简单程序:
public class Test {
public static int numberTest(short x, int y) {
// ...
}
public static int numberTest(short x, short y) {
// ...
}
public static void main(String[] args) {
short number = (short) 5;
System.out.println(numberTest(number, 3));
}
}
我已经对此进行了测试——Java 使用了第一个 numberTest() 函数。为什么?为什么不使用第二个,或者更确切地说,为什么不显示编译器错误?
第一个参数是short
,好吧。但第二个区分这两个功能。由于函数调用使用 just 3
,它可以是两者,不是吗?并且不需要类型转换。或者,每当我使用“3”作为时,Java 是否会应用类型转换int
?它总是以byte
然后转换为short
然后int
吗?