![]() |
![]() |
| |||||||
www.developer.com/java/article.php/1268901
|
The Essence of OOP using Java, Array Objects, Part 2 By Richard G. Baldwin June 5, 2002 First-level access This array access expression first accesses the contents of the element at index 0 in the array object referred to by the reference variable named v1. This is a reference to a second array object (note the double matching square brackets, [][]). Second-level access The array access expression in Listing 8 uses that reference to access the value stored in the element at index value 1 in the second array object. That value is then passed to the println method for display on the standard output device. (In this case, the value 0 is displayed, because array elements are automatically initialized to default values when the array object is created. The default value for all primitive numeric values is zero.)Zero-based indexing All array indexes in Java begin with 0. An array with length n can be indexed by the integers 0 to (n-1). Array accesses are checked at runtime. If an attempt is made to access the array with any other index value, an ArrayIndexOutOfBoundsException will be thrown. Index value types Arrays must be indexed by integer values of the following types: int, short, byte, or char. For any of these types other than int, the value will be promoted to an int and used as the index. An array cannot be accessed using an index of type long. Attempting to do so results in a compiler error. Default initialization If the elements in an array are not purposely initialized when the array is created, the array elements will be automatically initialized with default values. The default values are:
The values in the array elements may be purposely initialized when the
array object is created using a comma-separated list of expressions enclosed
by matching curly braces. This is illustrated in Listing 9.
No new operatorLength and order The length of the constructed array will equal the number of expressions in the list. The expressions in an array initializer are executed from left to right in the order that they occur in the source code. The first expression specifies the value at index value zero, and the last expression specifies the value at index value n-1 (where n is the length of the array). Each expression must be assignment-compatible with the array's component type, or a compiler error will occur. A sample program The previous paragraphs in this lesson have explained some of the rules and characteristics regarding array objects. They have also illustrated some of the syntax involved in the use of array objects in Java. More powerful and complex Many aspiring Java programmers find the use of array objects to be something less than straightforward, and that is understandable. In fact, Java array objects are somewhat more powerful than array structures in many other programming languages, and this power often manifests itself in additional complexity. A traditional two-dimensional rectangular array Some of that complexity is illustrated by the program named Array07, shown in Listing 26 near the end of this lesson. This program illustrates three different ways to accomplish essentially the same task using array objects in Java. That task is to emulate a traditional two-dimensional rectangular array as found in other programming languages. Two of the ways that are illustrated are essentially ragged arrays with subarrays having equal length. Ragged arrays The program also illustrates two different ways to work with array objects and ragged arrays. Will discuss in fragments As is my practice, I will discuss and explain the program in fragments. All of the interesting code in this program is contained in the main method, so I will begin my discussion with the first statement in the main method. Create a two-dimensional rectangular array structure Listing 10 creates an array structure that emulates a traditional rectangular
array with two rows and three columns.
Requires all rows to be same lengthReference variable declaration The code in Italics (to the left of the equal sign, =) in Listing 10 declares a reference variable named v1. This reference variable is capable of holding a reference to an array object whose elements are of the type Object[]. In other words, this reference variable is capable of holding a reference to an array object, whose elements are capable of holding references to other array objects, whose elements are of type Object. Two levels of nestingNot very general This is not a very general approach. In particular, the elements in the array object referred to by v1 can only hold references to other array objects whose element type is Object (or references to array objects whose element type is a subclass of Object). The elements in the array object referred to by v1 cannot hold references to ordinary objects instantiated from classes, or array objects whose element type is a primitive type. In other words, the elements in the array object referred to by v1 can only hold references to other array objects. The element types of those array objects must be assignment compatible with the type Object (this includes interface types and class types but not primitive types). |
| Go to page: Prev 1 2 3 4 5 6 7 8 Next |
