Exercises on Electrostatics Exercise 1.1 Suppose you have two ...
Array Basics Suppose you need to process daily temperatures for a 12-month period in a science...
-
Upload
loreen-curtis -
Category
Documents
-
view
214 -
download
0
Transcript of Array Basics Suppose you need to process daily temperatures for a 12-month period in a science...
Array Basics
Suppose you need to process daily temperatures for a 12-month period in a science project, would you use 365 variables?
You can, but would you?
An array is a collection of data values of the same data type.
If your program needs to deal with 100 integers, 365 real numbers, etc., you will use an array.
Arrays Variables are Reference Variables
Primitive variables contain values
Reference variables point at objects
byte short
intdouble
long
floatboolean
String
AppletMessageBox
HiLoInputBox
etc.
char
primitive reference
Data Type
Primitive Arrays
A primitive array stores multiple values of the same primitive data type.
rainfall0 1 2 3 4 5 6 7 8 9 10 11
The index of the firstposition in an array is 0.
Arrays of Primitive Data Types
Array Declaration
<data type> [ ] <variable> //variation 1<data type> <variable>[ ] //variation 2
Array Creation
<variable> = new <data type> [ <size> ]
Example
double[] rainfall;
rainfall = new double[12];
Variation 1
double rainfall [ ];
rainfall = new double[12];
Variation 2
An array is like an object!
Accessing Individual Elements
Individual elements in an array accessed with the indexed expression.
double[] rainfall = new double[12];
rainfall0 1 2 3 4 5 6 7 8 9 10 11
rainfall[2]This indexed expression refers to the element at position #2
This indexed expression refers to the element at position #2
Example Programs
Zadoot … out to reality … ArrayElements1.java
Zadoot … out to reality … ArrayElements2.java
Array Lengths
double[] rainfall = new double[12];
double annualAverage;
double sum = 0.0;
int index;
for (index = 0; index < rainfall.length; index++) {
rainfall[index] = keyboard.nextDouble();
sum += rainfall[index];
}
annualAverage = sum / rainfall.length;
The public constant length returns the capacity of an array.
The public constant length returns the capacity of an array.
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, arrays can be declared and initialized at the same time.
int[] number = { 2, 4, 6, 8 };
double[] samplingData = { 2.443, 8.99, 12.3, 45.009, 18.2, 9.00, 3.123, 22.084, 18.08 };
The capacity of the array is set to the number of elements in the list.
number.lengthsamplingData.length
4 9
Groeeet … out to reality … ArrayInit.java
(Secretly, Java pre-initializes arrays to the default value for the type, e.g., 0 for int arrays.)
References are Pointers
A reference variable points to an object
So, arrays are like objects, but don't worry about that for now – we’ll come back to it.
But it does mean you can
Lose an array
Have an array variable pointing nowhere
Have multiple references to an array
Not copy an array with =
Losing an Array
Code State of Memory
customer
A. A. The variable is allocated in memory.
A. A. The variable is allocated in memory.
AA
int[] customer;int[] customer;BB
customer = new int[5];customer = new int[5];
CC
customer = new int[5];customer = new int[5];B. B. The reference to the
new array is assigned to customercustomer.
B. B. The reference to the new array is assigned to customercustomer.
Arrayin
Memory
Arrayin
Memory
C. C. The reference to another array overwrites the reference in customer.customer.
C. C. The reference to another array overwrites the reference in customer.customer.
Arrayin
Memory
Arrayin
Memory
Garbage Collection
An array that has no references is garbage collected by the java program
Spaaocie … out to reality … ArrayGC.java
The array to no-where
An array variable can be explicitly made to point to no data, using the null value
A null array is different from an array of length zero.
Spaaocie … out to reality … ArrayNULL.java
Having Two References to an Array
Code State of Memory
AA
int[] clemens, twain;int[] clemens, twain; BB
clemens = new int[5];clemens = new int[5];
CC
twain = clemens;twain = clemens;
A. A. Variables are allocated in memory.
A. A. Variables are allocated in memory.
clemens
twain
B. B. The reference to the new array is assigned to clemensclemens.
B. B. The reference to the new array is assigned to clemensclemens.
Arrayin
Memory
Arrayin
Memory
C. C. The reference in clemensclemens is assigned to
customer.customer.
C. C. The reference in clemensclemens is assigned to
customer.customer.
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
Declaring and Creating a 2-D Array
Declaration
<data type> [][] <variable> //variation 1<data type> <variable>[][] //variation 2
Creation
<variable> = new <data type> [<size1>][<size2>]
Example
double[][] payScaleTable;
payScaleTable = new double[4][5];
3
2
1
0
43210
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 … ArrayRAMMatrix.java
Zuuu … out to reality … ArrayRAMCube.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
Irregular Arrays … null
int[][] data = new int[3][];
data[0] = new int[5];data[1] = new int[4];data[2] = null;
Jioooul … out to reality … ArrayIrreg2.java
Multi-dimensional Array Initialization
Like 1D arrays, it is possible to declare and initialize a multi-dimensional array at the same time.
Frong … out to reality … ArrayMDInit.java
Frong … out to reality … ArrayCubeInit.java
Passing Arrays to Methods - 1
Code
State of Memory
minOne = searchMinimum(arrayOne);
public int searchMinimum(float[] number)){
…
}
AA
At before searchMinimumAA
arrayOneA. A. Local variable number does not exist before the method execution
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
BB
arrayOne
The address is copied at BB
numberB. B. The value of the argument, which is an address, is copied to the parameter.
B. B. The value of the argument, which is an address, is copied to the parameter.
arrayOne number
While at inside the methodCC
Passing Arrays to Methods - 3
Code
State of Memory
minOne = searchMinimum(arrayOne);
public int searchMinimum(float[] number)){
…
}
CC
C. C. The array is accessed via number inside the method.
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)){
…
}DD
arrayOne
At after searchMinimumDD
D. D. The parameter is erased. The argument still points to the same object.
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 … ArrayParam2.java