Well, you are correct that Java does not have an arrow operator because the language doesn't use pointers. The dot operator in Java is really just a namespace operator. In regards to the issue of call by value versus call by reference, all non-primitive variables (i.e. not int, short, long, char, or byte) are references to objects in memory, so passing them to a method passes references to the same objects in memory, similar to appending an ampersand in a C++ function parameter. Any changes the method makes to the object will remain after the method is called.