Java Pass by Value or Pass by Reference
Last updated
Last updated
Java always passes arguments by value, NOT by reference.
I will explain this in steps:
Declaring a reference named f
of type Foo
and assign it a new object of type Foo
with an attribute "f"
.
From the method side, a reference of type Foo
with a name a
is declared and it's initially assigned null
.
As you call the method changeReference
, the reference a
will be assigned the object which is passed as an argument.
Declaring a reference named b
of type Foo
and assign it a new object of type Foo
with an attribute "b"
.
a = b
makes a new assignment to the reference a
, not f
, of the object whose attribute is "b"
.
As you call modifyReference(Foo c)
method, a reference c
is created and assigned the object with attribute "f"
.
c.setAttribute("c");
will change the attribute of the object that reference c
points to it, and it's the same object that reference f
points to it.
I hope you understand now how passing objects as arguments works in Java 🎉