Declaring and Creating ArraysDeclaring and Creating arrays
Arrays are objects that occupy memory
Array is created dynamically with keyword new
int c[] = new int[ 12 ];
Equivalent to int c[]; // declare array variable c = new int[ 12 ]; // create array
We can create arrays of objects too
String b[] = new String[ 100 ];
Lecture 4: Chapter 7 - Arrays
Outline Declaring and Creating Arrays Examples Using Arrays References and Reference Parameters Passing Arrays to Methods Sorting Arrays Multidimensional Arrays
Declaring and Creating Arrays
Declaring and Creating arrays
Arrays are objects that occupy memory
Array is created dynamically with keyword new
int c[] = new int[ 12 ];
Equivalent to int c[]; // declare array variable c = new int[ 12 ]; // create array
We can create arrays of objects too
String b[] = new String[ 100 ];
InitArray.javaLine 9Declare array as an array of intsLine 11Create 10 ints for array; each int is initialized to 0 by defaultLine 16array.length returns length of arrayLine 17array[counter] returns int associated with index in array 1 // Fig. 7.2: InitArray.java
2 // Creating an array.
3 import javax.swing.*;
4
5 public class InitArray {
6
7 public static void main( String args[] )
8 {
9 int array[]; // declare reference to an array
10
11 array = new int[ 10 ]; // create array
12
13 String output = "Index\tValue\n";
14
15 // append each array element's value to String output
16 for ( int counter = 0; counter < array.length; counter++ )
17 output += counter + "\t" + array[ counter ] + "\n";
18
19 JTextArea outputArea = new JTextArea();
20 outputArea.setText( output );
21
22 JOptionPane.showMe
Declare array as an array of ints Create 10 ints for array; each int is initialized to 0 by default array.length returns length of array array[counter] returns int associated with index in array
InitArray.javaEach int is initialized to 0 by default
Each int is initialized to 0 by default
Examples Using Arrays
Using an array initializer
Use initializer list
Items enclosed in braces ({})
Items in list separated by commas
int n[] = { 10, 20, 30, 40, 50 };
Creates a five-element array
Index values of 0, 1, 2, 3, 4
Do not need keyword new
InitArray.javaLine 11Declare array as an array of intsLine 11Compiler uses initializer list to allocate array 1 // Fig. 7.3: InitArray.java
2 // Initializing an array with a declaration.
3 import javax.swing.*;
4
5 public class InitArray {
6
7 public static void main( String args[] )
8 {
9 // array initializer specifies number of elements and
10 // value for each element
11 int array[] = { 32, 27, 64, 18, 95, 14, 90, 70, 60, 37 };
12
13 String output = "Index\tValue\n";
14
15 // append each array element's value to String output
16 for ( int counter = 0; counter < array.length; counter++ )
17 output += counter + "\t" + array[ counter ] + "\n";
18
19 JTextArea outputArea = new JTextArea();
20 outputArea.setText( output );
21
22 JOptionPane.showMessageDialog( null, outputArea,
23
Declare array as an array of ints Compiler uses initializer list to allocate array
InitArray.javaEach array element corresponds to element in initializer list
Each array element corresponds to element in initializer list
InitArray.javaLine 10Declare array as an array of intsLine 12Create 10 ints for arrayLine 16Use array index to assign array value 1 // Fig. 7.4: InitArray.java
2 // Initialize array with the even integers from 2 to 20.
3 import javax.swing.*;
4
5 public class InitArray {
6
7 public static void main( String args[] )
8 {
9 final int ARRAY_LENGTH = 10; // constant
10 int array[]; // reference to int array
11
12 array = new int[ ARRAY_LENGTH ]; // create array
13
14 // calculate value for each array element
15 for ( int counter = 0; counter < array.length; counter++ )
16 array[ counter ] = 2 + 2 * counter;
17
18 String output = "Index\tValue\n";
19
20 for ( int counter = 0; counter < array.length; counter++ )
21 output += counter + "\t" + array[ counter ] + "\n";
22
23 JTextArea
Declare array as an array of ints Create 10 ints for array Use array index to assign array value
InitArray.java 26 JOptionPane.showMessageDialog( null, outputArea,
27 "Initializing to Even Numbers from 2 to 20",
28 JOptionPane.INFORMATION_MESSAGE );
29
30 System.exit( 0 );
31
32 } // end main
33
34 } // end class InitArray
SumArray.javaLine 9Declare array with initializer list Lines 13-14Sum all array values 1 // Fig. 7.5: SumArray.java
2 // Total the values of the elements of an array.
3 import javax.swing.*;
4
5 public class SumArray {
6
7 public static void main( String args[] )
8 {
9 int array[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };
10 int total = 0;
11
12 // add each element's value to total
13 for ( int counter = 0; counter < array.length; counter++ )
14 total += array[ counter ];
15
16 JOptionPane.showMessageDialog( null,
17 "Total of array elements: " + total,
18 "Sum the Elements of an Array",
19 JOptionPane.INFORMATION_MESSAGE );
20
21 System.exit( 0 );
22
23 } // end main
24
25 } // end class SumArray
Declare array with initializer list Sum all array values
Histogram.javaLine 9Declare array with initializer list Line 19For each array element, print associated number of asterisks 1 // Fig. 7.6: Histogram.java
2 // Histogram printing program.
3 import javax.swing.*;
4
5 public class Histogram {
6
7 public static void main( String args[] )
8 {
9 int array[] = { 19, 3, 15, 7, 11, 9, 13, 5, 17, 1 };
10
11 String output = "Element\tValue\tHistogram";
12
13 // for each array element, output a bar in histogram
14 for ( int counter = 0; counter < array.length; counter++ ) {
15 output += "\n" + counter + "\t" + array[ counter ] + "\t";
16
17 // print bar of asterisks
18 for ( int stars = 0; stars < array[ counter ]; stars++ )
19 output += "*";
20
21 } // end outer for
22
23 JTextArea outputArea = new
Declare array with initializer list For each array element, print associated number of asterisks
Histogram.java 26 JOptionPane.showMessageDialog( null, outputArea,
27 "Histogram Printing Program", JOptionPane.INFORMATION_MESSAGE );
28
29 System.exit( 0 );
30
31 } // end main
32
33 } // end class Histogram
Examples Using Arrays (Cont.)
Some additional points
When looping through an array
Index should never go below 0
Index should be less than total number of array elements
When invalid array reference occurs
Java generates ArrayIndexOutOfBoundsException
Chapter 15 discusses exception handling
7.5 References and Reference Parameters
Two ways to pass arguments to methods
Pass-by-value
Copy of argument’s value is passed to called method
In Java, every primitive is pass-by-value
Pass-by-reference
Caller gives called method direct access to caller’s data
Called method can manipulate this data
Improved performance over pass-by-value
In Java, every object is pass-by-reference
In Java, arrays are objects
Therefore, arrays are passed to methods by reference
7.6 Passing Arrays to Methods
To pass array argument to a method
Specify array name without brackets
The method call
modifyArray( hourlyTemperatures );
Passes array hourlyTemperatures to method modifyArray
PassArray.javaLine 15Declare 5-int array with initializer listLine 24Pass array by reference to method modifyArray 1 // Fig. 7.9: PassArray.java
2 // Passing arrays and individual array elements to methods.
3 import java.awt.Container;
4 import javax.swing.*;
5
6 public class PassArray extends JApplet {
7
8 // initialize applet
9 public void init()
10 {
11 JTextArea outputArea = new JTextArea();
12 Container container = getContentPane();
13 container.add( outputArea );
14
15 int array[] = { 1, 2, 3, 4, 5 };
16
17 String output = "Effects of passing entire array by reference:\n" +
18 "The values of the original array are:\n";
19
20 // append original array elements to String output
21 for ( int counter = 0; counter < array.length; counter++ )
22 output += " " + array[ counter ];
23
24 modifyArray( a
Declare 5-int array with initializer list Pass array by reference to method modifyArray
PassArray.javaLine 35Pass array[3] by value to method modifyElement Lines 43-47Method modifyArray manipulates the array directlyLines 50-53Method modifyElement manipulates a primitive’s copyLines 52The original primitive is left unmodified 28 // append modified array elements to String output
29 for ( int counter = 0; counter < array.length; counter++ )
30 output += " " + array[ counter ];
31
32 output += "\n\nEffects of passing array element by value:\n" +
33 "array[3] before modifyElement: " + array[ 3 ];
34
35 modifyElement( array[ 3 ] ); // attempt to modify array[ 3 ]
36
37 output += "\narray[3] after modifyElement: " + array[ 3 ];
38 outputArea.setText( output );
39
40 } // end method init
41
42 // multiply each element of an array by 2
43 public void modifyArray( int array2[] )
44 {
Pass array[3] by value to method modifyElement Method modifyArray manipulates the array directly Method modifyElement manipulates a primitive’s copy The original primitive is left unmodified
PassArray.java
The object passed-by-reference is modified The primitive passed-by-value is unmodified
Sorting Arrays
Sorting data
Bubble sort
Use nested loops to make several passes through array
Each pass compares successive pairs of elements
BubbleSort.javaLine 15Declare 10-int array with initializer listLine 23Pass array by reference to method bubbleSort to sort array 1 // Fig. 7.10: BubbleSort.java
2 // Sort an array's values into ascending order.
3 import java.awt.*;
4 import javax.swing.*;
5
6 public class BubbleSort extends JApplet {
7
8 // initialize applet
9 public void init()
10 {
11 JTextArea outputArea = new JTextArea();
12 Container container = getContentPane();
13 container.add( outputArea );
14
15 int array[] = { 2, 6, 4, 8, 10, 12, 89, 68, 45, 37 };
16
17 String output = "Data items in original order\n";
18
19 // append original array values to String output
20 for ( int counter = 0; counter < array.length; counter++ )
21 output += " " + array[ counter ];
22
23 bubbleSort( array ); // sort array
24
25 output += "\n\nData items i
Declare 10-int array with initializer list Pass array by reference to method bubbleSort to sort array
Comments