public class Main {
    public void testMethod(Object o){
        System.out.println("Object Method called");
    }
    public void testMethod(String s){
        System.out.println("String Method called");
    }
    public static void main(String[] args) {
        new Main().testMethod(null);
    }
}
This program magically calls String method? On what criteria Java compiler decided to go with String method? Can somebody please point me the reason for this?