28
Chapter 9 (part of) Single-dimensional Arrays

Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

Embed Size (px)

Citation preview

Page 1: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

Chapter 9 (part of)

Single-dimensional Arrays

Page 2: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 3: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 4: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

4

Java Data Types

Page 5: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

5

Java Data Types

Try expressing these definitions in words

Page 6: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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?

Page 7: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 8: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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)

Page 9: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 10: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

10

One-Dimensional Arrays

Declare

Instantiate

Page 11: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

11

One-Dimensional Arrays

int[] numbers = new int[4];

Whattype ofvaluescan be

stored ineach cell

?

Page 12: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

12

One-Dimensional Arrays

float realNumbers[] = new float[10];

How do you

getvaluesinto the

cells?

Page 13: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

13

One-Dimensional Arrays

Array Initializersint numbers[] = {4.93, -15.2, 0.5, 1.67};

Initializersdo the

instantiationand

storing inwith the

declaration

Page 14: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

14

One-Dimensional Arrays

Accessing Individual Components

Indexing expression

Page 15: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 16: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

16

One-Dimensional Arrays

Whathappens

if youtry to

accessvalue[1000]

?

Page 17: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 18: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

18

One-Dimensional Arrays

Aggregate Array Operations

What does the following expression return?

numbers == values

Page 19: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

19

One-Dimensional Arrays

Now, what does the following expression return?

numbers == values

Page 20: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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?

Page 21: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

21

More Examples

What does this code segment do?

totalOccupants = 0;

for (int aptNo = 0; aptNo < occupants.length; aptNo++)

totalOccupants = totalOccupants +occupants[aptNo];

Page 22: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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?

Page 23: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

23

Arrays of Objects

String groceryItems[] = new String[10];

for (index = 0; index < grocerItems.length; index++)

{

groceryItems[index] = inFile.nextLine();

}

Page 24: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 25: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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()) ?

Page 26: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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. ..

Page 27: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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

Page 28: Chapter 9 (part of) Single-dimensional Arrays. 2 Knowledge Goals Understand the difference between atomic and composite data types Understand the difference

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?