Arrays are not a primitive type in Java, but they are not objects either.
In fact, all arrays in Java are objects. Every Java array type has java.lang.Object as its supertype, and inherits the implementation of all methods in the Object API.
Like all Java objects, arrays are passed by value ... but the value is the reference to the array.
Real passing by reference involves passing the address of a variable so that the variable can be updated. This is NOT what happens when you pass an array in Java.