I have encountered something strange today. The below code compiles unexpectedly and runs fine.
public class Test {
    public static void func(double d) {
        System.out.print("d : " + d);
    }
    public static void main(String[] args) {
        float f = 10.0f;
        func(f); // output: d : 10.0
    }
}
But this one gives compilation error
public class Test {
    public static void func(float f) {
        System.out.print("f : " + f);
    }
    public static void main(String[] args) {
        double d = 10.0d;
        func(d);
    }
}
Can somebody please explain this behaviour ?
 
     
     
    