fork download
  1. class Dog {
  2. String name;
  3.  
  4. Dog(String name) {
  5. this.name = name;
  6. }
  7. }
  8.  
  9. class PassByValueDemo {
  10.  
  11. // Modifies the internal state of the object
  12. static void changeName(Dog dog) {
  13. dog.name = "Max";
  14. System.out.println("Inside changeName: " + dog.name);
  15. }
  16.  
  17. // Reassigns the reference to a new object
  18. static void reassignDog(Dog dog) {
  19. dog = new Dog("Charlie");
  20. System.out.println("Inside reassignDog: " + dog.name);
  21. }
  22.  
  23. public static void main(String[] args) {
  24. Dog myDog = new Dog("Buddy");
  25.  
  26. System.out.println("Original name: " + myDog.name);
  27.  
  28. changeName(myDog);
  29. System.out.println("After changeName: " + myDog.name);
  30.  
  31. reassignDog(myDog);
  32. System.out.println("After reassignDog: " + myDog.name);
  33. }
  34. }
  35.  
Success #stdin #stdout 0.14s 57600KB
stdin
Standard input is empty
stdout
Original name: Buddy
Inside changeName: Max
After changeName: Max
Inside reassignDog: Charlie
After reassignDog: Max