View
220
Download
0
Category
Tags:
Preview:
Citation preview
Chapter 9 (part of)
Single-dimensional Arrays
2
Knowledge Goals
• Understand the difference between atomic and composite data types
• Understand the difference between unstructured and structured composite data types
• Know how Java implements arrays• Know how an array is passed as an argument
3
Skill Goals
• Declare and instantiate a one-dimensional array
• Access and manipulate the individual components in a one-dimensional array where the elements are• Atomic types• Composite types
• Use an initializer list to instantiate a one-dimensional array
4
Java Data Types
5
Java Data Types
Try expressing these definitions in words
6
Java Data Types
Composite data type
A data type that allows a collection of values to be associated with an identifier of that type
Unstructured data type
A collection of components that are not organized with respect to one another
Structured data type
An organized collection of components; the organization determines the means used to access individual components
Is a class structured?
7
Java Data Types
class Example
{
int field1;
int field2;
double field3;
}
class Example
{
double field3;
int field2;
int field1;
}
Is a class structured? Did you change your answer?
Changing the order does not change the access
8
One-Dimensional Arrays
Data structure
The implementation of a composite data type
Note the difference between a data structure (implementation of any composite type) and a structured data type (a composite type that is structured)
9
One-Dimensional Arrays
One-dimensional array
A structured collection of components, all of the same type, that is given a single name; each component is accessed by an index that indicates the component's position within the collection
Class
composite, unstructured
heterogeneous
access by field name
Array
composite, structured
homogeneous
access by position
10
One-Dimensional Arrays
Declare
Instantiate
11
One-Dimensional Arrays
int[] numbers = new int[4];
Whattype ofvaluescan be
stored ineach cell
?
12
One-Dimensional Arrays
float realNumbers[] = new float[10];
How do you
getvaluesinto the
cells?
13
One-Dimensional Arrays
Array Initializersint numbers[] = {4.93, -15.2, 0.5, 1.67};
Initializersdo the
instantiationand
storing inwith the
declaration
14
One-Dimensional Arrays
Accessing Individual Components
Indexing expression
15
One-Dimensional Arrays
IndexingExpression
IndexingExpression
Place into whicha value is stored;value is changed
Place from whicha value is extracted;value is not changed
16
One-Dimensional Arrays
Whathappens
if youtry to
accessvalue[1000]
?
17
One-Dimensional Arrays
Out-of-bounds array index
An index that is either less than 0 or greater than the array size minus 1, causing an ArrayIndexoutOfBoundsException to be thrown
Length
A public instance variable associated with each instantiated array, accessed by array name .length
Use length to avoid out-of-bounds indexes
18
One-Dimensional Arrays
Aggregate Array Operations
What does the following expression return?
numbers == values
19
One-Dimensional Arrays
Now, what does the following expression return?
numbers == values
20
One-Dimensional Arrays
System provides two useful array methods
first = second.clone(); // duplicates second import java.util.Arrays;
Arrays.equals(first, second); // item-by-item check
System.out.println(first == second);
System.out.println(Arrays.equals(first, second);
What is printed?
21
More Examples
What does this code segment do?
totalOccupants = 0;
for (int aptNo = 0; aptNo < occupants.length; aptNo++)
totalOccupants = totalOccupants +occupants[aptNo];
22
More Examples
if ((letter >= 'A' && letter <= 'Z' || letter >= 'a' && letter <= 'z')){ index = (int)Character.toUpperCase(letter) - (int)'A'; lettrCount[index] = letterCount[index] + 1;}
What doesthis codefragment
do?
23
Arrays of Objects
String groceryItems[] = new String[10];
for (index = 0; index < grocerItems.length; index++)
{
groceryItems[index] = inFile.nextLine();
}
24
Arrays of Objects
Expression Class/TypegroceryItems Reference to an array
groceryItems[0] Reference to a string
groceryItems[0].charAt() A character
groceryItems[10] Error
Base address
The memory address of the first element of the array
"Reference to" is the base address
25
Arrays of Objects
How do Array.equals and clone operate with arrays of objects?
Array.equals uses the == operator to compare arrays, so the addresses are compared
clone uses the = operator, so the addresses are copied
Array.equals(numbers, numbers.clone()) ?
26
Date bigEvents[] = new Date[10];
Arrays of Objects
[ 0 ]
[ 1 ] .
.
.
[ 9 ]
bigEvents Expression Class/Type
bigEvents Array
bigEvents[0] Date
bigEvents[0].month String
bigEvents[0].day int
bigEvents[0].year int
bigEvents[0].month.charAt(0) char
Date. ..
Date. ..
Date. ..
27
Arrays of Objects
length is the number of slots assigned to the array
What if the array doesn’t have valid data in each of these slots?
Keep a counter of how many slots have valid data and use this counter when processing the array
More about this type of processing in Chapter 11
28
public static double average(int grades[])
// Calculates and returns the average grade in an
// array of grades.
// Assumption: All array slots have valid data.
{
int total = 0;
for (int i = 0; i < grades.length; i++)
total = total + grades[i];
return (double) total / (double) grades.length;
}
Arrays of Objects
What is passed as an argument?
Recommended