Question:
How do I get the addresses of primitive variables, reference variables, and objects in Java?
Answer:
Unlike systems programming languages like C, Java does not have pointers. Objects are all accessed via references, which can be thought of as safe pointers with no pointer arithmetic. Primitivetypes can only be referenced by value. If Java had pointers, it would be much more difficult, if not impossible, to enforce its security sandbox model because memory could be arbitrarily overwritten through pointer accesses. In addition, the programmer would have to be moreaware of how the garbage collection system worked in order to avoid compromising it through complex cyclic graphs of pointer references.
To summarize, Java was explicitly designed to disallow the explicit addressing of memory.