DOC PREVIEW
UMD CMSC 131 - Lecture 18: Arrays

This preview shows page 1-2-3-4-5 out of 14 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 14 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

CMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)Lecture 18:ArraysLast time:1.switch2.break3.Case continuation (or “fall through”)4.break / continue of loopsThis lecture set:1.Intro to arrays2.Copying arrays and making arrays bigger3.Array lengths and out-of-bounds indexing4.Passing arrays and array elements to a functionCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)1Data Structures and ArraysData structures: mechanisms for storing data in a structured wayWe have seen simple data structures implemented as classes:Rational.javaRational number data stored as numerator / denominator pairArrays are a very useful data structure provided by Java and other programming languagesArray: sequence of variables of the same type homogeneous data structuresize (quantity) fixed when space is allocated orderedIndividual elements of sequence can be referenced/updated/etc.Arrays are objects (hence allocated on heap) with a reference on the stackLike other objects, “instance variables” of array = cells in array are assigned default values (0 / null / etc.) when array createdCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)2Array IndexingJava provides a special syntax for uniformly accessing cells in an arrayDeclaration of a:int[] a;Allocation of space for array named a:a = new int[5];This creates five int variables “named”::a[0],a[1],a[2],a[3],a[4]To modify contents of cell #2 to 6 and cell #1 to 74:a[2] = 6;a[1] = 74;To use the contents of cell #2 and cell #1 :System.out.println(“value = “ + (a[1]-a[2]));This access mechanism to the individual elements is called array indexingIn Java / C / C++, array cells are indexed beginning at 0 and going up to n-1 (n is number of cells)Beware: start at 0! and end at one less than the size!!CMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)3Square Brackets: [ ] and lengthThree uses in Java:Array variable declarationint[] a;Array object creationnew int[10];Array indexinga[0]array also has a.length holds the amount of space currently allocated for that arrayCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)4Alternate Declaration SyntaxTo maintain consistency with C / C++, following declaration of array variables also possibleint grade[];Compare to Java standard:int[] grade; Java standard generally preferred (“type”emphasizes array status) Alternative syntax sometimes handy:int grade[], i, gpa[];Declares two arrays of base type int: grade, gpaDeclares a single int variable: iCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)5Summary of ArraysArrays are:Sequences of cells holding values of the same type (“base type”)Objects (hence created using new)To define an array variable:int[] a; // an array with base type intTo create an array object:a = new int[10];Creates an array of 10 cellsThe base type is intTo access individual array cells: use indexinga[0], a[1], …, a[9]Cells are just like variables:They may be read: x = a[3];They may be written: a[2] = 7;CMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)6A Common Programming IdiomTo process all elements in array a…Do following:for (int i = 0; i < a.length; i++){…process the one element at a[i]…}Use fresh loop counter to avoid overwriting another variable of same name elsewhereRemember: Use i < a.length, not i <= a.lengthCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)7Copying ArraysDoes the following copy a into b?int[] a = new int[5];int[] b = a;No: a, b are aliasesHow to make a copy? For now, use loop:int[] a = new int[5];int[] b = new int[a.length];for (int i = 0; i < a.length; i++){b[i] = a[i];}CMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)8Making Arrays BiggerSuppose we want to make an array bigger by adding an element.Does the following work?int[] a = new int[5];a.length++;No!We get the following:Exception in thread "main" java.lang.Error: Unresolved compilation problem: The final field array.length cannot be assignedat Sample.main(Sample.java:15)a.length is immutableNo assignment is allowedCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)9To Make an Array Bigger…Create a new larger array objectCopy old array contents into new objectAssign address of new object to variableint[] a = new int[5];{int[] temp = new int[a.length + 1];for (int i = 0; i < a.length; i++)temp[i] = a[i];a = temp;}New variable temp created to hold copyNew block created to ensure temp does not interfere with anothervariable of the same namePrevious contents of a become garbageCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)10Arrays As ArgumentsArrays = objectsArray variables = referencesArray cells = variables of the base type (references or primitives depending on what that base type is)Both can be used as arguments to methodsArray cells: passed just like the variables of that base typeArray arguments: passed just like objectsReference to array is passed inIf the method expects an array of doubles, an array of doubles of any size can be passedPromotion does not apply. You cannot pass an intarrayCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)11Array InitializersArrays may be initialized at declaration time!int[] a = {5,0,1,2};Java:counts elements (here, 4);creates correct size of arraycopies elements into arrayreturns reference to arraySee Array Example 3HeapStacka5 0 1 2CMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)12Arrays of ObjectsClass types can also be base types of arrays e.g.String[] acc = new String[3]; Array cells store references to objectsArray initializers can also be usedString[] acc = {“UMD”, “UNC”, “Duke”};HeapStackaccUMDUNCDukeCMSC 131 Fall 2007Jan Plane (adapted from Bonnie Dorr)13Arrays of Objects (continued)Class types can also be base types of arrayse.g.String[] acc = new String[3];Array cells store references to objectsArray initializers can also be usedString[] acc = {“UMD”, “UNC”, “Duke”};More complicated example than strings: Cat objectsExpressions can also appear in initializersCat[] kennel = {new Cat(“Joe”),new Cat(“Jill”),new


View Full Document

UMD CMSC 131 - Lecture 18: Arrays

Documents in this Course
Set #3

Set #3

7 pages

Exam #1

Exam #1

6 pages

Exam #1

Exam #1

6 pages

Notes

Notes

124 pages

Notes

Notes

124 pages

Load more
Download Lecture 18: Arrays
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view Lecture 18: Arrays and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view Lecture 18: Arrays 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?