cs102 a wide array of possibilities cs 102 java’s central casting

25
CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

Post on 18-Dec-2015

217 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

A Wide Array of Possibilities

CS 102

Java’s Central Casting

Page 2: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

What’s an Array

• An array is a group of values of the same type (usually stored in consecutive memory locations)

• Arrays are objects– Can be assigned to variables of type

Object

• Dynamically created

Page 3: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

An Array of Examples

From Figure 5.3

int n[]; // declare an array of integers

// initialize instance variables

public void init() {

n = new int[ 10 ]; //dynamic allocation

}

Page 4: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

The Declaration of Array

Array declarations

int[] ai; // array of intshort[][] as; // array of array of short

Object[] ao, // array of Object otherAo; // array of Object

Page 5: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Declaring Arrays

• Can’t specify the length in a declarationint test [] = new int [100]; // Okay

int test2 [100]; // No good

int test3 [100]=new int [100]; // No good

Page 6: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Some Array Definitions

These create array objects:

Exception ae[] = new Exception[3]; Object aao[][] = new Exception[2][3];int[] factorial = { 1, 1, 2, 6, 24 };String[] aas = {"array", "of", "String"};

Page 7: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

An Array Exampleint face;int frequency[];

// initialize instance variablespublic void init() { frequency = new int[ 7 ];

for (int roll=1; roll <= 6000; roll++ ) { face = 1 + (int) (Math.random() * 6 ); ++frequency[ face ]; }}

Page 8: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

An Array of Observations• Arrays know their own length

test.length == 100– What kind of loops do we usually use with

arrays?• Arrays start at index 0

– Last index == ??

• Arrays must be indexed by int values (short, byte, or char are okay, but long is no good)

Page 9: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Operating on an Array

• Square brackets are an operator

• Brackets have very high precedence– Same as ()’s

• Example-17*studentGrades[12] * 2

Page 10: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

"Can he do that?"

• What’s wrong with the following code?

int scores[] = {98, 76, 84, 97, 101, 78};

int counter=0;

for (; counter <= scores.length; counter++) {

System.out.println("Test #" + counter +

": " + scores[counter]);

}

Page 11: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Array Initializers

• Use {}’s to set initial values– int grades[] = {87, 92, 76, 94}

Page 12: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Finally, a Constant Variable

• What’s wrong with the following code?

// Figure 5.6

// This Applet won’t compile

import java.applet.Applet;

public class FinalTest extends Applet {

final int x;

}

Page 13: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Pass the Salt, and an Array of int

• From last time: primitive types and reference types

• Parameter passing: offering data to a method in the method callpublic void paint(Graphics graphObject)

– When you call paint, give it a Graphics object

• How does Java pass data around?

Page 14: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Call Me Ishmael, But Don't Call Me Late for Dinner

• Call-by-value– The called method gets a copy of the

actual data (i.e., its value)– Called method can't corrupt the original

data, because it's only got a copy

• Call-by-reference– The called method gets a reference to the

data

Page 15: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Arrays & Call-by-Reference

• Reference types are always passed call-by-reference– Pro: Don’t need to copy lots of data– Con: Since you can access the original

object, you can change it

• Arrays are a reference type– Whole arrays are passed call-by-reference

Page 16: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

What About Array Elements?

• If an array is an array of a reference type, then individual elements are passed as call-by-____________Graphics[] graphicsArray = new Graphics[10];

• If an array is an array of a reference type, then individual elements are passed as call-by-____________int[] scores = new int[10];

Page 17: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Searching & Sorting Data

• The Second Law of Thermodynamics

• Sorting restores order to the world

• Sorting in everyday life– Bank checks by account

• Searching is easier when sorted– Reverse directories of phone numbers

Page 18: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Sorting in Computers

• Usually start with an array of items to be sorted– Integers– Social Security numbers– Last names and first names

• Lots of data– All the SSN’s in the U.S.– All of GM’s employees

Page 19: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Different Ways to Sort

• Bubble sort– Compare two neighbors, swap if out of

order

1 2 5 4 7 8 6

1 2 4 5 7 8 6

1 2 4 5 7 6 8

1 2 4 5 6 7 8

Page 20: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

The Code for Bubble Sortpublic void sort() {

int hold; // temporary holding area for swap

// passes

for ( int pass = 1; pass < a.length; pass++ )

// one pass

for ( int i = 0; i < a.length - 1; i++ )

// one comparison

if ( a[ i ] > a[ i + 1 ] ) {

// one swap

hold = a[i]; a[ i ] = a[ i + 1 ]; a[ i + 1 ] = hold;

}

}

Nested for loops

Page 21: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

There’s More Than One Way to Sort a Cat

• Other sorts– Quicksort– Heapsort– Bucket sort

• Different sorts have different characteristics– Memory usage– Speed

Page 22: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Searching Here, There & Everywhere

• Need to find a value? Search for it!

• Linear search– Is it the next one?

• No, then look again• Yes, stick a fork in me, ‘cuz I’m done

– Works on unsorted items

• Binary search– Cut in half every time

Page 23: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

You’re a Detective in a Small Town

• The killer called the victim

• Get the LUDs

• Look up the number in a reverse directory

Page 24: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

Arrays of Arrays

• Arrays in multiple dimensions– Not just a list– A table (an array of arrays)– A cube (an array of arrays of arrays)

Page 25: CS102 A Wide Array of Possibilities CS 102 Java’s Central Casting

CS102

An Example

An array of arrays

int b[][] = { {1,2}, {3, 4, 5}}

Row 0: 1 2

Row 1: 3 4 5

A 3x3 array

int b[][];

b = new int[3][3];