Java Reference
In-Depth Information
4.16.2
Declaring array variables
The LogAnalyzer class contains a field that is of an array type:
private int[] hourCounts;
The distinctive feature of an array variable's declaration is a pair of square brackets as part of
the type name: int[] . This indicates that the hourCounts variable is of type integer array.
We say that int is the base type of this particular array, which means that the array object will
store values of type int . It is important to distinguish between an array-variable declaration
and a similar-looking simple-variable declaration:
int hour; // A single int variable.
int[] hourCounts; // An int-array variable.
Here, the variable hour is able to store a single integer value, whereas hourCounts will be
used to refer to an array object once that object has been created. An array-variable declaration
does not itself create the array object. That takes place in a separate stage using the new opera-
tor, as with other objects.
It is worth looking at the unusual syntax again for a moment. The declaration int[] would in
more conventional syntax appear, maybe, as Array<int> . That it does not has historical rather
than logical reasons. You should still get used to reading it in the same way: as “array of int.”
Exercise 4.62 Write a declaration for an array variable people that could be used to refer
to an array of Person objects.
Exercise 4.63 Write a declaration for an array variable vacant that could be used to refer
to an array of boolean values.
Exercise 4.64 Read through the LogAnalyzer class and identify all the places where the hour-
Counts variable is used. At this stage, do not worry about what all the uses mean, as they will be
explained in the following sections. Note how often a pair of square brackets is used with the variable.
Exercise 4.65 What is wrong with the following array declarations? Correct them.
[]int counts;
boolean[5000] occupied;
4.16.3
Creating array objects
The next thing to look at is how an array variable is associated with an array object.
The constructor of the LogAnalyzer class includes a statement to create an int array object:
hourCounts = new int[24];
Once again, notice how different the syntax is from that of normal object creation. For instance,
there are no round brackets for a constructor's parameters, because an array object does not
have a constructor. This statement creates an array object that is able to store 24 separate integer
values and makes the hourCounts array variable refer to that object. The value of 24 is the size
of the array, and not a constructor parameter. Figure 4.7 illustrates the result of this assignment.
 
Search WWH ::




Custom Search