为什么java在没有接受long的方法时将long参数提升为float/double?
这是一个SSCCE,它演示了所描述的(恕我直言,奇怪的)行为:
public class Test {
public static void print(int param) {
System.out.println("int");
}
public static void print(float param) {
System.out.println("float");
}
public static void print(Long param) { //<--Wrapper type
System.out.println("Long");
}
public static void main(String[] args) {
long param = 100L;
print(param); // output == float
}
}
为什么Java会这样做?