On pointers and references, C++ vs Java
C++ has two types for referring to other objects: pointers and references. Pointers are an integer type that can be used to access other memory addresses. They can be manipulated through pointer arithmatic, assigned manually, etc. Most of the time, however, they are used to either point directly to another, existing, object, or used to keep a handle on newly acquired memory through the new operator. They can be used to acquire arrays dynamically, or most anything else.
C++ references serve as an alias for an object that already exists. As such, it doesn't allocate memory, or anything else. It's primary purpose is to act as a "first order object" when receiving a parameter into a function that needs to be able to modify that parameter.
Now look at Java references. You assign them to existing data (causing two references to point to the same location in memory) or through the new operator. They are not integral types, and are automatically dereferenced under normal circumstances. They are used to acquire arrays and classes dynamically. They cannot be used as a handle on a primitive type.
If you look at the three types, it is clear that a Java references IS a pointer. Because they are not implemented the same way (integral vs non-integral), they have some differences. Nevertheless, they are pointers, and any C++ programmer will be unable to think of them as anything else.



Any idea why they keep being referred to as not pointers? I mean, is it just this one author or every author/book?
Every author I have read refuses to acknowledge them as pointers. I think it comes from the association with C/C++ pointers as being a major source of insecurity/errors. Java's references are more restricted, which helps prevent the types of problems they can lead to in other languages. I suspect it's a marketing thing to help beef up their reputation for a secure environment: "We don't have pointers, so we can't have those problems!"