In short: Java has pointers and is strictly pass-by-value.
It's a well know fact that Java has pointers given that you have NullPointerException as an exception.
It's a well know fact that Java has pointers given that you have NullPointerException as an exception.
While Java technically has pointers (in the sense that it has pointer types), it has dulled them so that you can't hurt yourself with them the same way that C (and C++) permit.