What is meant by ‘value semantics’, and what is meant by ‘implicit pointer semantics’?
Java uses implicit pointer semantics
on variable access (you can not directly edit the reference, it autmatically (implicit) gets resolved to the Object on access) and also uses Pass-by-Value semantics
on method parameters passing.
Read Pass-by-value semantics in Java applications:
In Java applications, when an object reference is a parameter to a method, you are passing a copy of the reference (pass by value), not the reference itself. Note that the calling method's object reference and the copy are pointing to the same object. This is an important distinction. A Java application does nothing differently when passing parameters of varying types like C++ does. Java applications pass all parameters by value, thus making copies of all parameters regardless of type.
Short: All parameters in Java are passed by value. But that doesn't mean an Object gets copied (like the default in PHP4), but the reference to that object gets copied.
You'll see all explanations and in-depth examples on Pass-by-value semantics in Java applications