What is the difference between pass by value and pass by reference in Java?