I have encountered something strange today. The below code compiles unexpectedly and runs fine.

```java
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

```java
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 ?