class ArrayEg4
{
public static void main ( String[] args )
{
int[] valA = { 12, 23, 45, 56 };
int[] valB = new int[4];
valB[ 0 ] = valA[ 0 ] ;
valB[ 1 ] = valA[ 1 ] ;
valB[ 2 ] = valA[ 2 ] ;
valB[ 3 ] = valA[ 3 ] ;
}
}
In this example, the int
in cell 0 of valA
is copied to cell 0 of valB
,
and so on.
valB[ 0 ] = valA[ 0 ] ;
This is just like an assignment statement
spot = source;
where both
variables are of primitive type int
.
After the four assignment statements of the answer have executed,
each array contains the same values
in the same order:
Super Bug Alert: The following statement does not do the same thing:
valB = valA ;
Remember that arrays are objects. The statement above will
merely copy the object reference in valA
into the object
reference variable valB
,
resulting in two ways to access the single array object,
as seen in the second picture.
The object that valB
previously referenced is now lost
(it has become garbage.)
valA
and valB
are now aliases for the same object.
Say that the statement valB = valA
had been executed,
resulting in the above picture.
What would the following print out?
valA[2] = 999; System.out.println( valA[2] + " " + valB[2] );