class Demo {
void methoda(Integer a) {
SOP("integer");
}
void methoda(float a) {
SOP("float");}
}
class test{
P S V main(String[] args) {
Demo a=new Demo();
a.methoda(3);
}
}
为什么该程序的输出是“ float”而不是“ Integer”?
答案 0 :(得分:0)
3
是原始类型int
,JVM首先将其扩展为float
,而不是将其包装到Integer
在Java方法中进行重载时,当 重载的方法找不到其完全匹配的签名。在那里面 情况下,当找不到完全匹配时,JVM将方法与 比参数宽的最小参数。
Wilding击败了拳击,因为自动装箱功能已添加到Java中 J2SE 5.0版本。因此,Java 5的设计师认为 代码不应中断,并且应按以前的方式运行。以来 扩展能力已经存在;因此,重载方法 优先考虑扩大拳击。
http://cs-fundamentals.com/java-programming/method-overloading-in-java.php