πŸ“š

Β >Β 

πŸ’»Β 

Β >Β 

⌚️

6.3 Enhanced For Loop For Arrays

3 min readβ€’december 30, 2022

Milo Chang

Milo Chang

Peter Cao

Peter Cao

Milo Chang

Milo Chang

Peter Cao

Peter Cao


AP Computer Science AΒ πŸ’»

130Β resources
See Units

Now, we will introduce a special kind of for loop called theΒ enhanced for loop. The enhanced for loop can be used to traverse through most data structures. Note that the enhanced for loop can only be used to traverse in the forward direction. To use it, we use this structure:

Structure for Enhanced 'For Loops'

for (dataType i: arrayName) { do something with i }
This basically says that for every elementΒ iΒ in the array, we do something toΒ i.

Limitations of Enhanced 'For Loops'

We can only accessΒ i,Β but we cannot change or set new values toΒ i. Thus, we cannot do this:
/** Doubles each element of the array */ public static void doubleArray(int[] array) { for (int i: array) { i *= 2; // doubles each individual element } }
Why? Remember that Java is aΒ pass-by-valueΒ programming language. The variableΒ iΒ is only a copy of the actual element in the array and changingΒ iΒ only changes the copy, not the actual element itself. If you want to actually change the array elements, use regular for loops as in Topic 6.2.
However, we can use mutator methods on objects on the array to set the value of their instance variables. This is becauseΒ i is a copy of the object reference, which means thatΒ iΒ refers to the same object as the array element, so calling methods on i is the same as calling methods on the individual array elements themselves.

Example

Here is an example of how we can use an enhanced for loop and mutator methods to set the value of an object's instance variables:
/** Represents a student */ public class Student { private String name; /** Sets the name of the Student */ public void setName(String name) { this.name = name; } /** Other instance variables, methods, and constructors not shown */ } // IN ANOTHER CLASS /** Resets all students' names */ public static void doubleArray(Student[] array, String defaultName) { for (Student student: array) { student.setName(defaultName); // Sets each student's name to a default name } }
It's important to note that enhanced for loops force us to traverse through the entire data structure. We can't just go to every other element or every third element because we have no control over what indices of the array the loop uses.
Thus, while any enhanced for loop can be rewritten as a for loop or a while loop, there are for loop or while loop traversals that you cannot write as enhanced for loops.
Let's see how we could write the enhanced for loop above as a for loop:
// IN ANOTHER CLASS /** Resets all students' names */ public static void doubleArray(Student[] array, String defaultName) { for (int i = 0; i < array.length; i++) { array[i].setName(defaultName); // Sets each student's name to a default name } }
Browse Study Guides By Unit
βž•Unit 1 – Primitive Types
πŸ“±Unit 2 – Using Objects
πŸ–₯Unit 3 – Boolean Expressions & if Statements
πŸ•ΉUnit 4 – Iteration
βš™οΈUnit 5 – Writing Classes
πŸ’ΎUnit 7 – ArrayList
πŸ’»Unit 8 – 2D Array
πŸ–²Unit 9 – Inheritance
πŸ–±Unit 10 – Recursion
πŸ™Exam Reviews