When it comes to overloading functions, I have not completely understood how Java determines which function to execute on runtime. Let's assume we have a simple program like this:
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));
}
}
I've tested this - and Java uses the first numberTest() function. Why? Why isn't it using the second one, or rather, why isn't it showing a compiler error?
First parameter is short
, okay. But second one distinguishes the two functions. As the function call uses just 3
, it could be both, couldn't it? And there is no type conversion needed. Or does Java apply type conversion whenever I use "3" as int
? Does it always start with byte
and then convert to short
and int
then?