I have learned Java and am having a problem with pointers in Objective-C. This is from my Java book's "The allocation of memory to variables" section: "The local variable used to store the object appears on the stack just as if it were a local variable holding a primitive type. That particular variable, however, holds only the memory address of the object, which is stored in the heap." This is from the "Passing arrays as parameters" section: "If you pass a primitive value like an integer, Java copies the value, which means that it is impossible for a method to change it. ... however, passing an object as parameter to a method means that only the reference is copied, so the method effectively shares the object with the caller." Are the facts in these two quotes always true in Objective-C? The Java book does not even mention pointers, and I am wondering why they are needed so much in Objective-C. Is the definition of variable different in the two languages?