Primitive Arrays A primitive array stores multiple values of the same primitive data type. rainfall The index of the first position in an array is 0.
Accessing Individual Elements Individual elements in an array accessed with the indexed expression. double[] rainfall = new double[12]; rainfall rainfall[2] This indexed expression refers to the element at position #2
Array Lengths double[] rainfall = new double[12]; double annualAverage; double sum = 0.0; int index; for (index = 0; index < rainfall.length; index++) { rainfall[index] = SavitchIn.readLineDouble(); sum += rainfall[index]; } annualAverage = sum / rainfall.length; The public constant length returns the capacity of an array.
Example Programs Phrrud … out to reality … ArrayRain.java Phrrud … out to reality … ArrayAverages.java
Array Bounds Errors Trying to access an array element that does not exist causes a runtime error Negative indices Indices beyond the size Falop … out to reality … ArrayBoundsError.java
Array Initialization Like other data types, it is possible to declare and initialize an array at the same time. int[] number = { 2, 4, 6, 8 }; double[] samplingData = { 2.443, 8.99, 12.3, , 18.2, 9.00, 3.123, , }; String[] monthName = {"January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December" }; The capacity of the array is set to the number of elements in the list. number.length samplingData.length monthName.length
Example Programs Groeeet … out to reality … ArrayInit.java An array variable can be explicitly made to point to no data, using the null value Spaaocie … out to reality … ArrayNULL.java
References are Pointers A reference variable points to an object So, arrays are objects, but don't worry about that now But it does mean you can Have multiple references to an array Not copy an array with = Lose an array
Having Two References to an Array Code State of Memory A A int[] clemens, twain; B B clemens = new int[5]; C C twain = clemens; A. A. Variables are allocated in memory. clemens twain B. clemens B. The reference to the new array is assigned to clemens. Array in Memory Array in Memory C. clemens customer. C. The reference in clemens is assigned to customer.
Example Program Dooop … out to reality … ArrayDup.java
Cloning an Array An array can be copied using the clone method It's necessary to cast the clone to the right array type Babababoom … out to reality … ArrayClone.java
Losing an Array Code State of Memory customer A. A. The variable is allocated in memory. A A int[] customer; B B customer = new int[5]; C C B. customer B. The reference to the new array is assigned to customer. Array in Memory Array in Memory C. customer. C. The reference to another array overwrites the reference in customer. Array in Memory Array in Memory
Garbage Collection An array that has no references is garbage collected by the java program Spaaocie … out to reality … ArrayGC.java
Two-Dimensional Arrays Two-dimensional arrays are useful in representing tabular information.
Example Programs Ieeei … out to reality … ArrayMatrix.java Ieeei … out to reality … ArrayCalendar.java Ieeei … out to reality … ArrayCube.java
Multi-dimensional Arrays … NOT Java does not really have multi-dimensional arrays Java has arrays of arrays int[][] data = new int[3][5]; is shorthand for int[][] data = new int[3][]; data[0] = new int[5]; data[1] = new int[5]; data[2] = new int[5];
Multi-dimensional Arrays in RAM int[][] data = new int[3][5]; Zuuu … out to reality … ArrayRAM.java
Irregular Arrays int[][] weirdData = new int[3][]; weirdData[0] = new int[5]; weirdData[1] = new int[4]; weirdData[2] = new int[7];
Irregular Arrays int[][] weirdData = new int[3][]; weirdData[0] = new int[5]; weirdData[1] = new int[4]; weirdData[2] = new int[7]; weirdData.length == 3 weirdData[1].length == 4 Jioooul … out to reality … ArrayIrreg1.java
Passing Arrays to Methods - 1 Code State of Memory minOne = searchMinimum(arrayOne); public int searchMinimum(float[] number)) { … } A A At before searchMinimum A A arrayOne A. A. Local variable number does not exist before the method execution
Passing Arrays to Methods - 2 Code State of Memory minOne = searchMinimum(arrayOne); public int searchMinimum(float[] number)) { … } arrayOne B B The address is copied at B B number B. B. The value of the argument, which is an address, is copied to the parameter.
arrayOne number While at inside the method C C Passing Arrays to Methods - 3 Code State of Memory minOne = searchMinimum(arrayOne); public int searchMinimum(float[] number)) { … } C C C. C. The array is accessed via number inside the method.
arrayOne number Passing Arrays to Methods - 4 Code State of Memory minOne = searchMinimum(arrayOne); public int searchMinimum(float[] number)) { … } D D arrayOne At after searchMinimum D D D. D. The parameter is erased. The argument still points to the same object.
Example Programs Flunot … out to reality … ArrayParamAvg.java Flunot … out to reality … ArrayParam1.java
Returning Arrays Array variables in methods exist until the method ends, but the array data lives while referenced An array variable can be returned from a method The receiving array variable then refers to the array data, and the array persists Wrrbbrack … out to reality … ArrayReturn.java Wrrbbrack … out to reality … ArrayParam2.java
Local arrays Array variables in methods exist until the method ends The array data referred to by such an array variable is lost and garbage collected when the method ends Dessserts … out to reality … ArrayLocalGC.java