编辑:一如既往,在5分钟内得到很好的答案:)如果我做了一个微小的改变 - 让F资本"浮动",我会得到我预期的输出.
class NumberMachine{
public static void main(String [] args) {
Integer wi1 = new Integer("420");
int i = 101;
Integer wi2 = i*420/101;
if(wi1 == wi2) System.out.print(" ==");
if(wi1.equals(wi2)) System.out.print(" equal");
float f = 1.23f; //if this were Float f..., it'd print Float, not double.
new NumberMachine().printIt(f);
}
void printIt(Float f){
System.out.println(" Float");
}
void printIt(double d){
System.out.println(" double");
}
}
Run Code Online (Sandbox Code Playgroud)
输出是 equal double,这对我没有意义.我期待 equal Float.如果我注释掉第二个printIt,那确实是输出.我只是不知道为什么,当面对两个printIt之间的选择时,编译器忽略了其参数完全匹配的那个.