class Dog {
this.name = name;
}
}
class PassByValueDemo {
// Modifies the internal state of the object
static void changeName(Dog dog) {
dog.name = "Max";
System.
out.
println("Inside changeName: " + dog.
name); }
// Reassigns the reference to a new object
static void reassignDog(Dog dog) {
dog = new Dog("Charlie");
System.
out.
println("Inside reassignDog: " + dog.
name); }
public static void main
(String[] args
) { Dog myDog = new Dog("Buddy");
System.
out.
println("Original name: " + myDog.
name);
changeName(myDog);
System.
out.
println("After changeName: " + myDog.
name);
reassignDog(myDog);
System.
out.
println("After reassignDog: " + myDog.
name); }
}
Y2xhc3MgRG9nIHsKICAgIFN0cmluZyBuYW1lOwoKICAgIERvZyhTdHJpbmcgbmFtZSkgewogICAgICAgIHRoaXMubmFtZSA9IG5hbWU7CiAgICB9Cn0KCmNsYXNzIFBhc3NCeVZhbHVlRGVtbyB7CgogICAgLy8gTW9kaWZpZXMgdGhlIGludGVybmFsIHN0YXRlIG9mIHRoZSBvYmplY3QKICAgIHN0YXRpYyB2b2lkIGNoYW5nZU5hbWUoRG9nIGRvZykgewogICAgICAgIGRvZy5uYW1lID0gIk1heCI7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJbnNpZGUgY2hhbmdlTmFtZTogIiArIGRvZy5uYW1lKTsKICAgIH0KCiAgICAvLyBSZWFzc2lnbnMgdGhlIHJlZmVyZW5jZSB0byBhIG5ldyBvYmplY3QKICAgIHN0YXRpYyB2b2lkIHJlYXNzaWduRG9nKERvZyBkb2cpIHsKICAgICAgICBkb2cgPSBuZXcgRG9nKCJDaGFybGllIik7CiAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJJbnNpZGUgcmVhc3NpZ25Eb2c6ICIgKyBkb2cubmFtZSk7CiAgICB9CgogICAgcHVibGljIHN0YXRpYyB2b2lkIG1haW4oU3RyaW5nW10gYXJncykgewogICAgICAgIERvZyBteURvZyA9IG5ldyBEb2coIkJ1ZGR5Iik7CgogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiT3JpZ2luYWwgbmFtZTogIiArIG15RG9nLm5hbWUpOwoKICAgICAgICBjaGFuZ2VOYW1lKG15RG9nKTsKICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFmdGVyIGNoYW5nZU5hbWU6ICIgKyBteURvZy5uYW1lKTsKCiAgICAgICAgcmVhc3NpZ25Eb2cobXlEb2cpOwogICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQWZ0ZXIgcmVhc3NpZ25Eb2c6ICIgKyBteURvZy5uYW1lKTsKICAgIH0KfQo=