A reference can point to a variable, e.g., to a field in an object or a local variable in a stack frame.
References can point to variables
References can only point to heap objects
CorrectionHere is what's right.
In Java, a reference either is
null or it points to an object (or to an array).
References cannot point into the insides of an object/array,
they cannot point anywhere into the stack, and
they cannot point to global (static fields).
A variable holds a value, and in Java a value is either a value of a primitive type, or a reference to some heap object (note that an array also is considered a heap object).
In the example below, the assignment statement
t = s does not store a reference to variable
s in variable
int s = 3; int t = s;
t will store the value that was stored in variable
That is, variable
t will store the value
OriginWhere could this misconception come from?
This misconception might stem from students who have some knowledge of C, where one can take the address of a variable, or of C++ references.