When you pass an object to a method, Java copies the reference, not the object. This means the method can modify the original object's fields:
void doubleSpeed(Car c) {
c.speed = c.speed * 2;
}
If you call doubleSpeed(myCar), the speed field on your original myCar changes. The method received a copy of the reference, and both references point to the same object in memory.
This is different from passing primitives. If you pass an int, the method gets a copy of the value. Changes inside the method don't affect the original. With objects, changes to fields persist because you're modifying the shared object, not a copy.