250 likes | 276 Views
A Wide Array of Possibilities. Java’s Central Casting. CS 102. 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. An Array of Examples.
E N D
A Wide Array of Possibilities Java’s Central Casting CS 102
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
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 }
The Declaration of Array Array declarations int[] ai; // array of int short[][] as; // array of array of short Object[] ao, // array of Object otherAo; // array of Object
Declaring Arrays • Can’t specify the length in a declaration int test [] = new int [100]; // Okay int test2 [100]; // No good int test3 [100]=new int [100]; // No good
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"};
An Array Example int face; int frequency[]; // initialize instance variables public void init() { frequency = new int[ 7 ]; for (int roll=1; roll <= 6000; roll++ ) { face = 1 + (int) (Math.random() * 6 ); ++frequency[ face ]; } }
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)
Operating on an Array • Square brackets are an operator • Brackets have very high precedence • Same as ()’s • Example -17*studentGrades[12] * 2
"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]); }
Array Initializers • Use {}’s to set initial values • int grades[] = {87, 92, 76, 94}
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; }
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 call public void paint(Graphics graphObject) • When you call paint, give it a Graphics object • How does Java pass data around?
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
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
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];
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
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
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
The Code for Bubble Sort public 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
There’s More Than One Way to Sort a Cat • Other sorts • Quicksort • Heapsort • Bucket sort • Different sorts have different characteristics • Memory usage • Speed
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
You’re a Detective in a Small Town • The killer called the victim • Get the LUDs • Look up the number in a reverse directory
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)
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];