Since reference types store the reference to the object, then what is passed to the method is the reference to the object. It the object is changed in the method, then it will be changed in the method that did the calling.
For example, there is an ArrayList of Integers in the main method that is passed as a parameter to a method that changes the element at index 0 to 1000. If the ArrayList is printed in the main method after the method call, it will have a first element of 1000.
For primitive types, that is not the case. If the main method has an int variable x storing 5 and x is passed to a method. If x is changed to 7 in the method and then x is printed in the main method after the method call, the x in the main method will still be 5.
Objects "pass by reference" and primitive types "pass by value". This is the case for all objects and all primitive types.