- Provide students with contrasting examples of array creation to help them see that assigning one array to point to another array doesn’t make a copy of that array. Use the below activity to help students develop and understanding of this common error.
- Activity:
- Provide students the following code:
- Version 1: Point two arrays references to the same array.
int[] arrayX = new int[10];
int[] arrayY = arrayX;arrayX[0] = 1000;
System.out.println(arrayX[0]); // prints 1000
System.out.println(arrayY[0]); // prints 1000arrayY[1] = 2000;
System.out.println(arrayY[1]); // prints 2000
System.out.println(arrayX[1]); // prints 2000- Version 2: Point two array references each to separate arrays.
int[] arrayX = {1, 1, 1, 1, 1, 1, 1};
int[] arrayY = {2, 2, 2, 2, 2, 2, 2, 2, 2};arrayX[0] = 1000;
System.out.println(arrayX[0]); // prints 1000
System.out.println(arrayY[0]); // prints 2arrayY[1] = 2000;
System.out.println(arrayY[1]); // prints 2000
System.out.println(arrayX[1]); // prints 1- Additionally, the code in Version 1 and Version 2 provides the opportunity to talk about:
- The fact array indexing starts at 0.
- The fact that we can initialize an array with values:
int[] arrayX = {1, 1, 1, 1, 1, 1, 1};
int[] arrayY = {2, 2, 2, 2, 2, 2, 2, 2, 2};
- The fact that arrays are given default values (null for Objects, 0 for ints, false for booleans etc.)
int[] arrayX = new int[10];
System.out.println(arrayX[0]); // prints 0