Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth...

43
Java Programming Fourth Edition Chapter 8 Arrays

Transcript of Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth...

Page 1: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming Fourth Edition

Chapter 8 Arrays

Page 2: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 2

Objectives

•  Declare and initialize an array •  Use subscripts with an array •  Declare an array of objects •  Search an array for an exact match •  Search an array for a range match

Page 3: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 3

Objectives (continued)

•  Pass arrays to methods •  Create arrays of Strings •  Sort array elements •  Use two-dimensional and multidimensional arrays •  Use the Arrays class

Page 4: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 4

Declaring and Initializing an Array

•  Array –  Named list of data items –  All have same type

•  Declare array variable –  Same way as declaring any simple variable –  Insert pair of square brackets after type

Page 5: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 5

Declaring and Initializing an Array (continued)

•  double[] salesFigure; •  int[] idNum; •  Still need to reserve memory space

–  salesFigure = new double[20]; –  double[] salesFigure = new double[20];

•  Subscript –  Integer contained within square brackets –  Indicates one of array’s variables or elements

Page 6: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 6

Declaring and Initializing an Array (continued)

•  Array’s elements numbered beginning with zero –  Can legally use any subscript from 0 through 19 –  When working with array that has 20 elements

•  Work with any individual array element –  Treat no differently than single variable of same type –  salesFigure[0] = 2100.00;

Page 7: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 7

An Array of 20 salesFigure Items in Memory

Page 8: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 8

Initializing an Array

•  Variable with reference type –  Such as array –  Holds memory address where value stored

•  Array names –  Represent computer memory addresses –  Contain references

•  Declare array name –  No computer memory address assigned –  Has special value null

•  Unicode value ‘\u0000’

Page 9: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 9

Initializing an Array (continued)

•  Use keyword new to define array –  Array name acquires actual memory address value

•  int[] someNums = new int[10]; –  Each element of someNums has value of 0

•  char array elements –  Assigned ‘\u0000’

•  boolean array elements –  Automatically assigned value false

Page 10: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 10

Initializing an Array (continued)

•  Assign nondefault values to array elements upon creation –  int[] tenMult = {10, 20, 30, 40, 50, 60};

Page 11: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 11

Using Subscripts with an Array

•  Scalar –  Primitive variable

•  Power of arrays –  Use subscripts that are variables –  Rather than constant subscripts –  Use a loop to perform array operations for (sub = 0; sub < 5; ++sub)

scoreArray[sub] += 3;

Page 12: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 12

Using Subscripts with an Array (continued)

•  Application contains array –  Use every element of array in some task –  Perform loops that vary loop control variable

•  Start at 0 •  End at one less than size of array

•  Convenient to declare symbolic constant equal to size of array –  final int NUMBER_OF_SCORES = 5;

Page 13: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 13

Using Subscripts with an Array (continued)

•  Field –  Instance variable –  Automatically assigned value for every array created

•  length field –  Contains number of elements in array for(sub = 0; sub < scoreArray.length; ++sub) scoreArray[sub] += 3;

Page 14: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 14

Using Subscripts with an Array (continued)

•  Enhanced for loop –  Cycle through array –  Without specifying starting and ending points for loop

control variable for(int val : scoreArray)

System.out.println(val);

Page 15: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 15

Declaring an Array of Objects

•  Create array of Employee objects –  Employee[] emp = new Employee[7]; –  Must call seven individual constructors final double PAYRATE = 6.35;

for(int x = 0; x < NUM_EMPLOYEES; ++x) emp[x] = new Employee(101 + x, PAYRATE);

Page 16: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 16

Searching an Array For an Exact Match

•  Determine whether variable holds one of many valid values –  Use series of if statements –  Compare variable to series of valid values

Page 17: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 17

Searching an Array For an Exact Match (continued)

•  Searching array –  Compare variable to list of values in array for(int x = 0; x < validValues.length; ++x)

{ if(itemOrdered == validValues[x])

– validItem = true; }

Page 18: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 18

A for Loop with an Early Exit

Page 19: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 19

Searching an Array For an Exact Match (continued)

•  Parallel array –  One with same number of elements as another –  Values in corresponding elements related

•  Alternative for searching –  Use while loop

Page 20: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 20

A while Loop with an Early Exit

Page 21: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 21

Searching an Array For a Range Match

•  Searching array for exact match –  Not always practical

•  Range match –  Compare value to endpoints of numerical ranges –  Find category in which value belongs

Page 22: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 22

The FindDiscount Class

Page 23: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 23

Passing Arrays to Methods

•  Pass single array element to method –  Same as passing variable

•  Passed by value –  Copy of value made and used in receiving method

•  Reference types –  Object holds memory address where values stored –  Receiving method gets copy of array’s actual

memory address

Page 24: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 24

Passing Arrays to Methods (continued)

•  Reference types (continued) –  Receiving method has ability to alter original values

in array elements

Page 25: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 25

The PassArrayElement Class

Page 26: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 26

Creating Arrays of Strings

•  Create array of Strings String[] deptName = {"Accounting", "Human Resources", "Sales"};

for(int a = 0; a < deptName.length; ++a) System.out.println(deptName[a]);

Page 27: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 27

The SearchList Class

Page 28: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 28

Sorting Array Elements

•  Sorting –  Process of arranging series of objects in some

logical order •  Ascending order

–  Begin with object that has lowest value •  Descending order

–  Start with object that has largest value

Page 29: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 29

Sorting Array Elements (continued)

•  Simplest possible sort –  Involves two values that are out of order –  Swap two values temp = valA; // 16 goes to temp

valA = valB; // 2 goes to valA valB = temp; // 16 goes to valB

Page 30: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 30

Sorting Array Elements (continued)

•  Bubble sort –  Continue to compare pairs of items

•  Swapping them if they are out of order –  Smallest items “bubble” to top of list –  Eventually creating sorted list

Page 31: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 31

Ascending Bubble Sort of the someNums Array Elements

Page 32: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 32

More Efficient Ascending Bubble Sort of the someNums Array Elements

Page 33: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 33

Sorting Arrays of Objects

•  Sort arrays of objects –  Same way that you sort arrays of primitive types –  Major difference

•  Make comparison that determines whether to swap two array elements

•  Sort based on particular object field

Page 34: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 34

Using Two-Dimensional and Multidimensional Arrays

•  One-dimensional or single-dimensional array –  Picture as column of values –  Elements accessed using single subscript

•  Two-dimensional arrays –  Two or more columns of values –  Rows and columns –  Use two subscripts –  Matrix or table int[][] someNumbers = new int[3][4];

Page 35: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 35

View of a Two-Dimensional Array in Memory

Page 36: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 36

Using Two-Dimensional and Multidimensional Arrays (continued) int[][] rents = { {400, 450, 510}, {500, 560, 630},

{625, 676, 740}, {1000, 1250, 1600} };

public static void displayScores(int[][]scoresArray)

Page 37: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 37

Using Two-Dimensional and Multidimensional Arrays (continued)

•  Multidimensional arrays –  More than two dimensions

•  Create arrays of any size –  Keep track of order of variables needed as

subscripts –  Don’t exhaust computer’s memory

Page 38: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 38

Using the Arrays Class

•  Arrays class –  Contains many useful methods for manipulating

arrays –  static methods

•  Use with class name •  Without instantiating Arrays object

–  binarySearch() method •  Convenient way to search through sorted lists of

values of various data types •  List must be in order

Page 39: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 39

Useful Methods of the Arrays Class

Page 40: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 40

You Do It

•  Creating and populating an array •  Initializing an array •  Using a for loop to access array elements •  Creating parallel arrays to eliminate nested if

statements •  Creating an application with an array of objects

Page 41: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 41

You Do It (continued)

•  Creating an interactive application that creates an array of objects

•  Passing an array to a method •  Using Arrays class methods

Page 42: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 42

Summary

•  Array –  Named list of data items –  All have same type

•  Array names –  Represent computer memory addresses

•  Shorten many array-based tasks –  Use variable as subscript

•  length field –  Contains number of elements in array

Page 43: Java Programming Fourth Edition - Rutgers Universityszhou/351/ch08.pdfJava Programming, Fourth Edition 43 Summary (continued) • Search array to find match to value • Perform range

Java Programming, Fourth Edition 43

Summary (continued)

•  Search array to find match to value •  Perform range match •  Pass single array element to method •  Sorting

–  Process of arranging series of objects in some logical order

•  Two-dimensional arrays –  Both rows and columns

•  Arrays class