SlideShare a Scribd company logo
1 of 12
CS305j
Introduction to Computing
Arrays Part 2 1
Topic 20
Arrays part 2
"42 million of anything is a lot."
-Doug Burger
(commenting on the number of transistors in
the Pentium IV processor)
Based on slides for Building Java Programs by Reges/Stepp, found at
http://faculty.washington.edu/stepp/book/
CS305j
Introduction to Computing
Arrays Part 2 2
Concept of an array rotation
Imagine we want to 'rotate' the elements of an array; that is,
to shift them left by one index. The element that used to be
at index 0 will move to the last slot in the array.
For example, {3, 8, 9, 7, 5} becomes {8, 9, 7, 5, 3}.
Before:
[0] [1] [2] [3] [4]
+---+ +-----+-----+-----+-----+-----+
list | +-+---> | 3 | 8 | 9 | 7 | 5 |
+---+ +-----+-----+-----+-----+-----+
After:
[0] [1] [2] [3] [4]
+---+ +-----+-----+-----+-----+-----+
list | +-+---> | 8 | 9 | 7 | 5 | 3 |
+---+ +-----+-----+-----+-----+-----+
CS305j
Introduction to Computing
Arrays Part 2 3
Shifting elements left
A left shift of the elements of an array:
[0] [1] [2] [3] [4]
+---+ +-----+-----+-----+-----+-----+
list | +-+---> | 3 | 8 | 9 | 7 | 5 |
+---+ +-----+-----+-----+-----+-----+
/ / / /
/ / / /
/ / / /
V V V V
+---+ +-----+-----+-----+-----+-----+
list | +-+---> | 8 | 9 | 7 | 5 | 5 |
+---+ +-----+-----+-----+-----+-----+
Let's write the code to do the left shift.
– Can we generalize it so that it will work on an array of any size?
– Can we write a right-shift as well?
CS305j
Introduction to Computing
Arrays Part 2 4
Shifting practice problem
Write a method insertInOrder that accepts a sorted
array a of integers and an integer value n as parameters,
and inserts n into a while maintaining sorted order.
In other words, assume that the element values in a occur in
sorted ascending order, and insert the new value n into the
array at the appropriate index, shifting to make room if
necessary. The last element in the array will be lost after
the insertion.
– Example: calling insertInOrder on array
{1, 3, 7, 10, 12, 15, 22, 47, 74} and value = 11 produces
{1, 3, 7, 10, 11, 12, 15, 22, 47}.
CS305j
Introduction to Computing
Arrays Part 2 5
String methods with arrays
These String methods return arrays:
String s = "long book";
Method name Description Example
toCharArray() separates this String into
an array of its characters
s.toCharArray()
returns {'l', 'o', 'n', 'g', ' ', 'b',
'o', 'o', 'k'}
split(delimiter) separates this String into
substrings by the given
delimiter
s.split(" ") returns
{"long", "book"}
s.split("o") returns
{"l", "ng b", "", "k"}
CS305j
Introduction to Computing
Arrays Part 2 6
String practice problems
Write a method named areAnagrams that
accepts two Strings as its parameters and
returns whether those two Strings contain the
same letters (possibly in different orders).
– areAnagrams("bear", "bare")
returns true
– areAnagrams("sale", "sail")
returns false
Write a method that accepts an Array of
Strings and counts the number of times a
given letter is present in all the Strings
CS305j
Introduction to Computing
Arrays Part 2 7
Graphics methods with arrays
These Graphics methods use arrays:
int[] xPoints = {10, 30, 50, 70, 90};
int[] yPoints = {20, 50, 35, 90, 15};
g.setColor(Color.GREEN);
g.drawPolyline(xPoints, yPoints, 5);
xPoints and yPoints are "parallel"
arrays
parallel arrays: two or more separate arrays, usually
of the same length, whose elements with equal
indices are associated with each other in some way
Method name
drawPolygon(int[] xPoints, int[] yPoints, int length)
drawPolyline(int[] xPoints, int[] yPoints, int length)
fillPolygon(int[] xPoints, int[] yPoints, int length)
CS305j
Introduction to Computing
Arrays Part 2 8
Arrays of objects
Recall: when you construct an array of primitive values like
ints, the elements' values are all initialized to 0.
– What is the equivalent of 0 for objects?
When you construct an array of objects (such as Strings),
each element initially stores a special reference value called
null.
– null means 'no object'
– Your program will crash if you try to call methods on a null reference.
String[] words = new String[5];
index 0 1 2 3 4
value null null null null null
CS305j
Introduction to Computing
Arrays Part 2 9
The dreaded 'null pointer'
Null array elements often lead to program crashes:
String[] words = new String[5];
System.out.println(words[0]);
words[0] = words[0].toUpperCase(); // kaboom!
Output:
null
Exception in thread "main"
java.lang.NullPointerException
at ExampleProgram.main(DrawPolyline.java:8)
The array elements should be initialized somehow:
for (int i = 0; i < words.length; i++) {
words[i] = "this is string #" + (i + 1);
}
words[0] = words[0].toUpperCase(); // okay now
CS305j
Introduction to Computing
Arrays Part 2 10
Command-line arguments
command-line arguments: If you run your Java program
from the Command Prompt, you can write parameters after
the program's name.
– The parameters are passed into main as an array of Strings.
public static void main(String[] args) {
for (int i = 0; i < args.length; i++) {
System.out.println("arg " + i + ": " + args[i]);
}
}
Usage:
C:hw6> java ExampleProgram how are you?
Or BlueJ call to main
arg 0: how
arg 1: are
arg 2: you?
CS305j
Introduction to Computing
Arrays Part 2 11
Java's Arrays class
The Arrays class in package java.util has several
useful static methods for manipulating arrays:
Method name Description
binarySearch(array, value) returns the index of the given value in this
array (-1 if not found)
equals(array1, array2) whether the two given arrays contain
exactly the same elements in the same
order
fill(array, value) sets every element in the array to have
the given value
sort(array) arranges the elements in the array into
ascending order
toString(array) returns a String representing the array
CS305j
Introduction to Computing
Arrays Part 2 12
Arrays class example
Searching and sorting numbers in an array:
int[] numbers = {23, 13, 480, -18, 75};
int index = Arrays.binarySearch(numbers, -18);
System.out.println("index = " + index);
– Output:
index = 3
Sorting and searching:
Arrays.sort(numbers);// now {-18, 13, 23, 75, 480}
index = Arrays.binarySearch(numbers, -18);
System.out.println("index = " + index);
System.out.println(Arrays.toString(numbers));
– Output:
index = 0
[-18, 13, 23, 75, 480]

More Related Content

Similar to Topic20Arrays_Part2.ppt

arrays-120712074248-phpapp01
arrays-120712074248-phpapp01arrays-120712074248-phpapp01
arrays-120712074248-phpapp01Abdul Samee
 
Multi dimensional arrays
Multi dimensional arraysMulti dimensional arrays
Multi dimensional arraysAseelhalees
 
C (PPS)Programming for problem solving.pptx
C (PPS)Programming for problem solving.pptxC (PPS)Programming for problem solving.pptx
C (PPS)Programming for problem solving.pptxrohinitalekar1
 
Arrays and library functions
Arrays and library functionsArrays and library functions
Arrays and library functionsSwarup Boro
 
Lec 25 - arrays-strings
Lec 25 - arrays-stringsLec 25 - arrays-strings
Lec 25 - arrays-stringsPrincess Sam
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxAbhishek Tirkey
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxGauravPandey43518
 
Intro to C# - part 2.pptx emerging technology
Intro to C# - part 2.pptx emerging technologyIntro to C# - part 2.pptx emerging technology
Intro to C# - part 2.pptx emerging technologyworldchannel
 
lecture7.ppt
lecture7.pptlecture7.ppt
lecture7.pptEdFeranil
 
CP PPT_Unit IV computer programming in c.pdf
CP PPT_Unit IV computer programming in c.pdfCP PPT_Unit IV computer programming in c.pdf
CP PPT_Unit IV computer programming in c.pdfsaneshgamerz
 

Similar to Topic20Arrays_Part2.ppt (20)

Array
ArrayArray
Array
 
Arrays
ArraysArrays
Arrays
 
arrays-120712074248-phpapp01
arrays-120712074248-phpapp01arrays-120712074248-phpapp01
arrays-120712074248-phpapp01
 
Chap 6 c++
Chap 6 c++Chap 6 c++
Chap 6 c++
 
Chap 6 c++
Chap 6 c++Chap 6 c++
Chap 6 c++
 
Multi dimensional arrays
Multi dimensional arraysMulti dimensional arrays
Multi dimensional arrays
 
Lecture 9
Lecture 9Lecture 9
Lecture 9
 
C (PPS)Programming for problem solving.pptx
C (PPS)Programming for problem solving.pptxC (PPS)Programming for problem solving.pptx
C (PPS)Programming for problem solving.pptx
 
Arrays in Java
Arrays in JavaArrays in Java
Arrays in Java
 
Arrays and library functions
Arrays and library functionsArrays and library functions
Arrays and library functions
 
14078956.ppt
14078956.ppt14078956.ppt
14078956.ppt
 
Lec 25 - arrays-strings
Lec 25 - arrays-stringsLec 25 - arrays-strings
Lec 25 - arrays-strings
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
C++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptxC++ STL (quickest way to learn, even for absolute beginners).pptx
C++ STL (quickest way to learn, even for absolute beginners).pptx
 
Intro to C# - part 2.pptx emerging technology
Intro to C# - part 2.pptx emerging technologyIntro to C# - part 2.pptx emerging technology
Intro to C# - part 2.pptx emerging technology
 
Arrays
ArraysArrays
Arrays
 
Chapter 6 arrays part-1
Chapter 6   arrays part-1Chapter 6   arrays part-1
Chapter 6 arrays part-1
 
lecture7.ppt
lecture7.pptlecture7.ppt
lecture7.ppt
 
Algo>Arrays
Algo>ArraysAlgo>Arrays
Algo>Arrays
 
CP PPT_Unit IV computer programming in c.pdf
CP PPT_Unit IV computer programming in c.pdfCP PPT_Unit IV computer programming in c.pdf
CP PPT_Unit IV computer programming in c.pdf
 

Recently uploaded

Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111GangaMaiya1
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSCeline George
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxJisc
 
OSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsOSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsSandeep D Chaudhary
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and ModificationsMJDuyan
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Pooja Bhuva
 
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdfFICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdfPondicherry University
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxEsquimalt MFRC
 
QUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lesson
QUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lessonQUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lesson
QUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lessonhttgc7rh9c
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxJisc
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17Celine George
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jisc
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxmarlenawright1
 
Economic Importance Of Fungi In Food Additives
Economic Importance Of Fungi In Food AdditivesEconomic Importance Of Fungi In Food Additives
Economic Importance Of Fungi In Food AdditivesSHIVANANDaRV
 
PANDITA RAMABAI- Indian political thought GENDER.pptx
PANDITA RAMABAI- Indian political thought GENDER.pptxPANDITA RAMABAI- Indian political thought GENDER.pptx
PANDITA RAMABAI- Indian political thought GENDER.pptxakanksha16arora
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxheathfieldcps1
 
Play hard learn harder: The Serious Business of Play
Play hard learn harder:  The Serious Business of PlayPlay hard learn harder:  The Serious Business of Play
Play hard learn harder: The Serious Business of PlayPooky Knightsmith
 
Tatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf artsTatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf artsNbelano25
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Jisc
 
How to Manage Call for Tendor in Odoo 17
How to Manage Call for Tendor in Odoo 17How to Manage Call for Tendor in Odoo 17
How to Manage Call for Tendor in Odoo 17Celine George
 

Recently uploaded (20)

Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111Details on CBSE Compartment Exam.pptx1111
Details on CBSE Compartment Exam.pptx1111
 
How to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POSHow to Manage Global Discount in Odoo 17 POS
How to Manage Global Discount in Odoo 17 POS
 
Wellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptxWellbeing inclusion and digital dystopias.pptx
Wellbeing inclusion and digital dystopias.pptx
 
OSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & SystemsOSCM Unit 2_Operations Processes & Systems
OSCM Unit 2_Operations Processes & Systems
 
Understanding Accommodations and Modifications
Understanding  Accommodations and ModificationsUnderstanding  Accommodations and Modifications
Understanding Accommodations and Modifications
 
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
Sensory_Experience_and_Emotional_Resonance_in_Gabriel_Okaras_The_Piano_and_Th...
 
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdfFICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
FICTIONAL SALESMAN/SALESMAN SNSW 2024.pdf
 
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptxHMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
HMCS Max Bernays Pre-Deployment Brief (May 2024).pptx
 
QUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lesson
QUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lessonQUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lesson
QUATER-1-PE-HEALTH-LC2- this is just a sample of unpacked lesson
 
Towards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptxTowards a code of practice for AI in AT.pptx
Towards a code of practice for AI in AT.pptx
 
How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17How to Create and Manage Wizard in Odoo 17
How to Create and Manage Wizard in Odoo 17
 
Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)Jamworks pilot and AI at Jisc (20/03/2024)
Jamworks pilot and AI at Jisc (20/03/2024)
 
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptxHMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
HMCS Vancouver Pre-Deployment Brief - May 2024 (Web Version).pptx
 
Economic Importance Of Fungi In Food Additives
Economic Importance Of Fungi In Food AdditivesEconomic Importance Of Fungi In Food Additives
Economic Importance Of Fungi In Food Additives
 
PANDITA RAMABAI- Indian political thought GENDER.pptx
PANDITA RAMABAI- Indian political thought GENDER.pptxPANDITA RAMABAI- Indian political thought GENDER.pptx
PANDITA RAMABAI- Indian political thought GENDER.pptx
 
The basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptxThe basics of sentences session 3pptx.pptx
The basics of sentences session 3pptx.pptx
 
Play hard learn harder: The Serious Business of Play
Play hard learn harder:  The Serious Business of PlayPlay hard learn harder:  The Serious Business of Play
Play hard learn harder: The Serious Business of Play
 
Tatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf artsTatlong Kwento ni Lola basyang-1.pdf arts
Tatlong Kwento ni Lola basyang-1.pdf arts
 
Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)Accessible Digital Futures project (20/03/2024)
Accessible Digital Futures project (20/03/2024)
 
How to Manage Call for Tendor in Odoo 17
How to Manage Call for Tendor in Odoo 17How to Manage Call for Tendor in Odoo 17
How to Manage Call for Tendor in Odoo 17
 

Topic20Arrays_Part2.ppt

  • 1. CS305j Introduction to Computing Arrays Part 2 1 Topic 20 Arrays part 2 "42 million of anything is a lot." -Doug Burger (commenting on the number of transistors in the Pentium IV processor) Based on slides for Building Java Programs by Reges/Stepp, found at http://faculty.washington.edu/stepp/book/
  • 2. CS305j Introduction to Computing Arrays Part 2 2 Concept of an array rotation Imagine we want to 'rotate' the elements of an array; that is, to shift them left by one index. The element that used to be at index 0 will move to the last slot in the array. For example, {3, 8, 9, 7, 5} becomes {8, 9, 7, 5, 3}. Before: [0] [1] [2] [3] [4] +---+ +-----+-----+-----+-----+-----+ list | +-+---> | 3 | 8 | 9 | 7 | 5 | +---+ +-----+-----+-----+-----+-----+ After: [0] [1] [2] [3] [4] +---+ +-----+-----+-----+-----+-----+ list | +-+---> | 8 | 9 | 7 | 5 | 3 | +---+ +-----+-----+-----+-----+-----+
  • 3. CS305j Introduction to Computing Arrays Part 2 3 Shifting elements left A left shift of the elements of an array: [0] [1] [2] [3] [4] +---+ +-----+-----+-----+-----+-----+ list | +-+---> | 3 | 8 | 9 | 7 | 5 | +---+ +-----+-----+-----+-----+-----+ / / / / / / / / / / / / V V V V +---+ +-----+-----+-----+-----+-----+ list | +-+---> | 8 | 9 | 7 | 5 | 5 | +---+ +-----+-----+-----+-----+-----+ Let's write the code to do the left shift. – Can we generalize it so that it will work on an array of any size? – Can we write a right-shift as well?
  • 4. CS305j Introduction to Computing Arrays Part 2 4 Shifting practice problem Write a method insertInOrder that accepts a sorted array a of integers and an integer value n as parameters, and inserts n into a while maintaining sorted order. In other words, assume that the element values in a occur in sorted ascending order, and insert the new value n into the array at the appropriate index, shifting to make room if necessary. The last element in the array will be lost after the insertion. – Example: calling insertInOrder on array {1, 3, 7, 10, 12, 15, 22, 47, 74} and value = 11 produces {1, 3, 7, 10, 11, 12, 15, 22, 47}.
  • 5. CS305j Introduction to Computing Arrays Part 2 5 String methods with arrays These String methods return arrays: String s = "long book"; Method name Description Example toCharArray() separates this String into an array of its characters s.toCharArray() returns {'l', 'o', 'n', 'g', ' ', 'b', 'o', 'o', 'k'} split(delimiter) separates this String into substrings by the given delimiter s.split(" ") returns {"long", "book"} s.split("o") returns {"l", "ng b", "", "k"}
  • 6. CS305j Introduction to Computing Arrays Part 2 6 String practice problems Write a method named areAnagrams that accepts two Strings as its parameters and returns whether those two Strings contain the same letters (possibly in different orders). – areAnagrams("bear", "bare") returns true – areAnagrams("sale", "sail") returns false Write a method that accepts an Array of Strings and counts the number of times a given letter is present in all the Strings
  • 7. CS305j Introduction to Computing Arrays Part 2 7 Graphics methods with arrays These Graphics methods use arrays: int[] xPoints = {10, 30, 50, 70, 90}; int[] yPoints = {20, 50, 35, 90, 15}; g.setColor(Color.GREEN); g.drawPolyline(xPoints, yPoints, 5); xPoints and yPoints are "parallel" arrays parallel arrays: two or more separate arrays, usually of the same length, whose elements with equal indices are associated with each other in some way Method name drawPolygon(int[] xPoints, int[] yPoints, int length) drawPolyline(int[] xPoints, int[] yPoints, int length) fillPolygon(int[] xPoints, int[] yPoints, int length)
  • 8. CS305j Introduction to Computing Arrays Part 2 8 Arrays of objects Recall: when you construct an array of primitive values like ints, the elements' values are all initialized to 0. – What is the equivalent of 0 for objects? When you construct an array of objects (such as Strings), each element initially stores a special reference value called null. – null means 'no object' – Your program will crash if you try to call methods on a null reference. String[] words = new String[5]; index 0 1 2 3 4 value null null null null null
  • 9. CS305j Introduction to Computing Arrays Part 2 9 The dreaded 'null pointer' Null array elements often lead to program crashes: String[] words = new String[5]; System.out.println(words[0]); words[0] = words[0].toUpperCase(); // kaboom! Output: null Exception in thread "main" java.lang.NullPointerException at ExampleProgram.main(DrawPolyline.java:8) The array elements should be initialized somehow: for (int i = 0; i < words.length; i++) { words[i] = "this is string #" + (i + 1); } words[0] = words[0].toUpperCase(); // okay now
  • 10. CS305j Introduction to Computing Arrays Part 2 10 Command-line arguments command-line arguments: If you run your Java program from the Command Prompt, you can write parameters after the program's name. – The parameters are passed into main as an array of Strings. public static void main(String[] args) { for (int i = 0; i < args.length; i++) { System.out.println("arg " + i + ": " + args[i]); } } Usage: C:hw6> java ExampleProgram how are you? Or BlueJ call to main arg 0: how arg 1: are arg 2: you?
  • 11. CS305j Introduction to Computing Arrays Part 2 11 Java's Arrays class The Arrays class in package java.util has several useful static methods for manipulating arrays: Method name Description binarySearch(array, value) returns the index of the given value in this array (-1 if not found) equals(array1, array2) whether the two given arrays contain exactly the same elements in the same order fill(array, value) sets every element in the array to have the given value sort(array) arranges the elements in the array into ascending order toString(array) returns a String representing the array
  • 12. CS305j Introduction to Computing Arrays Part 2 12 Arrays class example Searching and sorting numbers in an array: int[] numbers = {23, 13, 480, -18, 75}; int index = Arrays.binarySearch(numbers, -18); System.out.println("index = " + index); – Output: index = 3 Sorting and searching: Arrays.sort(numbers);// now {-18, 13, 23, 75, 480} index = Arrays.binarySearch(numbers, -18); System.out.println("index = " + index); System.out.println(Arrays.toString(numbers)); – Output: index = 0 [-18, 13, 23, 75, 480]