The Department of Computer Science & Engineering
cse@buffalo
STUART C. SHAPIRO: CSE 115 C

CSE 115
Introduction To Computer Science for Majors I
Lecture C
Lecture Notes
Stuart C. Shapiro
Spring, 2001


Arrays

Reading
Barnes, Chapter 9

An array is a random-access data structure that can hold a number of objects of the same type.
Notice that RAM is an array of bytes.

Declaration: type[] _array;
for any type.

Notice that type[] is a type, and can be used for formal parameters as well as declaring variables.

Creation: _array = new type[length];

After initialization, _array holds a reference to an object that, in turn, holds length many "variables" of type type.

As objects, arrays have attributes. In particular _array.length.

To refer to one of the "variables" held by _array, use _array[i], for 0 <= i < _array.length.

bsh % int[] a = new int[5];
bsh % print(a.length);
5
bsh % for (int i=0; i<a.length; i++) a[i] = i*i;
bsh % for (int i=0; i<a.length; i++) System.out.println(i + ": " + a[i]);
0: 0
1: 1
2: 4
3: 9
4: 16

Array "literals": {expression, ..., expression}

bsh % String[] charCodes = new String[] {"A: " + (int)'A', "B: " + (int)'B', "C: " + (int)'C'};
bsh % print(charCodes.length);
3
bsh % for (int i=0; i<charCodes.length; i++) print(charCodes[i]);
A: 65
B: 66
C: 67

Some tests motivated by class discussion:

bsh % int[] a;
bsh % print(a.length);
// Error: bsh.EvalError: Null pointer error... : 

bsh % a = new int[0];
bsh % print(a.length);
0

bsh % a[0] = 3;
// Error: bsh.EvalError: Assignment: Array access:java.lang.ArrayIndexOutOfBoundsException : 

See Histogram example.

Two Dimensional Arrays

Declaration: type[][] _array;
for any type.

_array; is an array of arrays of type type.

bsh % int[][] d2a = new int[5][10];
bsh % print(d2a.length);
5

bsh % print(d2a[2].length);
10

bsh % 	int[][] d2a = new int[5][10];
bsh % for (int i=0; i<d2a.length; i++)
	  for (int j=0; j<d2a[i].length; j++)
              d2a[i][j] = i*j;

bsh % 	for (int i=0; i<d2a.length; i++)
	    for (int j=0; j<d2a[i].length; j++)
		System.out.println(i + "," + j + ": " + d2a[i][j]);
0,0: 0
0,1: 0
0,2: 0
0,3: 0
0,4: 0
0,5: 0
0,6: 0
0,7: 0
0,8: 0
0,9: 0
1,0: 0
1,1: 1
1,2: 2
1,3: 3
1,4: 4
1,5: 5
1,6: 6
1,7: 7
1,8: 8
1,9: 9
2,0: 0
2,1: 2
2,2: 4
2,3: 6
2,4: 8
2,5: 10
2,6: 12
2,7: 14
2,8: 16
2,9: 18
3,0: 0
3,1: 3
3,2: 6
3,3: 9
3,4: 12
3,5: 15
3,6: 18
3,7: 21
3,8: 24
3,9: 27
4,0: 0
4,1: 4
4,2: 8
4,3: 12
4,4: 16
4,5: 20
4,6: 24
4,7: 28
4,8: 32
4,9: 36

See Checker Board example.

First Previous Next

Copyright © 2001 by Stuart C. Shapiro. All rights reserved.

Stuart C. Shapiro <shapiro@cse.buffalo.edu>