If the Employee reference is made null in the changedetails(), variable id value is retained and NullPointerException is not thrown (Code 1) may be because we just pass a copy of object's reference, but in Code 2 why the variables value has changed
Code 1:
public class JavaPassing {
    public static void changedetails(Employee e)
    {
        e=null;
    }
    public static void main(String args[])
    {
        Employee emp = new Employee("Vishal",7);
        changedetails(emp);
        System.out.println(emp.id);
    }
}
Code 2:
public class JavaPassing {
    public static void changedetails(Employee e)
    {
        e.id=9;
    }
    public static void main(String args[])
    {
        Employee emp = new Employee("Vishal",7);
        changedetails(emp);
        System.out.println(emp.id);
    }
}
 
     
     
     
     
     
    