The important difference between Java pointers and C/C++ pointers is that Java pointers are opaque. They're not interchangeable with integers, as C pointers are generally assumed to be.
Technically, C/C++ pointers are opaque, too, but most people code as if they represent an integer address. And of course whether they're supposed to be opaque or not, C/C++ explicitly allows you to add/subtract pointers and offsets.
But you can only do two three things to a Java pointer: assign to it; compare them for equality; and dereference them. That's it.