Java

In Java, primitive types like int and char are different from object types, like Integer or Dog. Primitive variables should be thought of as holding the value of the primitive, like 5 or 'f'. During function/constructor calls, returns, assignments, and exceptions, that value gets copied. You cannot ask for the memory address holding those values.

Object variables hold the type and location of the object, like Integer@3d540f or Dog@c763ba. During function calls, assignments, etc., that address is copied, not the object data itself. If you want to copy the object data, you have to ask explicitly with a call to .copy().

Java programmers should be aware of the difference between object and address, but there is no special syntax for “address-of” or “de-reference.” There are no object values, only primitive values and address values.