Java passes object references by value. While you cannot change the reference itself to point to a new object outside the method, you can modify the state of the object being referenced, which is effectively call-by-reference behavior for object contents.