cs102 a wide array of possibilities cs 102 java’s central casting
Post on 18-Dec-2015
217 views
TRANSCRIPT
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
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
}
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
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
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"};
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 ]; }}
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)
CS102
Operating on an Array
• Square brackets are an operator
• Brackets have very high precedence– Same as ()’s
• Example-17*studentGrades[12] * 2
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]);
}
CS102
Array Initializers
• Use {}’s to set initial values– int grades[] = {87, 92, 76, 94}
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;
}
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?
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
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
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];
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
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
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
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
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
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
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
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)
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];