I always thought Java was pass-by-reference.
However, I've seen a couple of blog posts (for example, this blog) that claim that it isn't.
I don't think I understand the distinction they're making.
What is the explanation?
I believe that much of the confusion on this issue has to do with the fact that different people have different definitions of the term "reference". People coming from a C++ background assume that "reference" must mean what it meant in C++, people from a C background assume "reference" must be the same as "pointer" in their language, and so on. Whether it's correct to say that Java passes by reference really depends on what's meant by "reference"