My only assumption is that this is working as pass by reference, I didn't realize java allows pass by reference for arrays?
Scratch that right..java is only pass by value
That's right, Java is call by value. But here the value is indeed the address of the array. It is quite a trick, because otherwise you would have to copy the complete array, which could be a huge amount of work and memory.
So yeah, it is a copy of the address pointing at the very same part of memory.
So the value is the address to the array. Which is a reference.
We give the address as a value to the new variable here:
int pixels = ((DataBufferInt) image.getRaster().getDataBuffer()).getData();
So actually this behaves like working with reference.