go to previous page   go to home page   go to next page hear noise

Answer:

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 ] ;

   }
}

Copying Values from Cell to Cell


two arrays


two references to one array

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:

 super bugvalB = valA ; 

Remember that arrays are objects. The statement above copies the object reference in valA into the object reference variable valB, resulting in two ways to access the array object valA, 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.

The array object previously pointed to by valB is now garbage (unless there is some other reference variable that points to it.)


QUESTION 13:

Say that the folowing executes, resulting in the above picture. What is printed out?

valB = valA;
valA[2] = 999;
System.out.println( valA[2] + "   " + valB[2] );

go to previous page   go to home page   go to next page