You are currently viewing Java for loops
java_logo

Java for loops

the for loop is one of the fundamental constructs that stands as a cornerstone for iterative tasks. While other looping mechanisms exist, the for loop shines when dealing with tasks like iterating over a collection for a fixed number of times or manipulating variables in a controlled manner. In this exploration, we will delve into the intricacies of the for loop, breaking down its structure, understanding its flow, and providing practical examples to illuminate its usage.

1. Structure of a Basic for Loop

for (initialization; booleanExpression; updateStatement) {
    // Loop Body
}
  1. Initialization: Executed only once at the beginning of the loop. It initializes the loop control variable or any necessary setup.
  2. Boolean Expression: Evaluated before each iteration. If true, the loop body executes; otherwise, the loop exits.
  3. Update Statement: Executed after each iteration, typically used to modify the loop control variable.

2. Flow of the for Loop

  1. Initialization: Executes once at the beginning.
  2. Boolean Expression: Evaluated before each iteration. If true, the loop body executes; if false, the loop exits.
  3. Loop Body: Executed if the boolean expression is true.
  4. Update Statement: Executed after the loop body. Then, control goes back to the boolean expression.
  5. Repeat: Steps 2-4 are repeated until the boolean expression becomes false.

example:

public class ForLoopExample {
    public static void main(String[] args) {
        for (int i = 0; i <= 5; i++) {
            System.out.print(i);
        }
    }
}

output:

012345
  1. nitialization (int i = 0;): Initializes the loop control variable i to 0.
  2. Boolean Expression (i <= 5): Evaluates to true initially. The loop body executes.
  3. Loop Body (System.out.println(i);): Prints the current value of i.
  4. Update Statement (i++): Increments i by 1.
  5. Repeat: Steps 2-4 are repeated until i becomes 6, at which point the boolean expression becomes false, and the loop exits.

Now, let’s modify the example to print the elements in reverse order. We can achieve this by initializing the loop control variable to 5 and changing the boolean expression to >= 0.

public class ReverseForLoopExample {
    public static void main(String[] args) {
        for (int i = 5; i >= 0; i--) {
            System.out.print(i);
        }
    }
}

output:

543210

Let’s create an example that demonstrates how you can have multiple variables in the initialization part of the for loop, updating them within the loop, and controlling the loop’s execution based on multiple conditions.

        int sharedVariable = 0;

        for (long count = 0, multiplier = 2; sharedVariable < 5 && count <3; sharedVariable++, count++) {
            System.out.println("Iteration " + sharedVariable);
            System.out.println("Count: " + count + ", Multiplier: " + multiplier);

            multiplier *= 1.5;

            System.out.println("Updated values: Count: " + count + ", Multiplier: " + multiplier);
            System.out.println("---------------");
        }

output:

Iteration 0
Count: 0, Multiplier: 2
Updated values: Count: 0, Multiplier: 3
---------------
Iteration 1
Count: 1, Multiplier: 3
Updated values: Count: 1, Multiplier: 4
---------------
Iteration 2
Count: 2, Multiplier: 4
Updated values: Count: 2, Multiplier: 6
---------------

3. The for-each Loop

The for-each loop, introduced in Java 5, provides a simplified and expressive way to iterate over elements in arrays or collections. Its primary advantage lies in its concise syntax, making code more readable and reducing the chance of errors. Let’s take a look at when and how you might use a for-each loop.

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

for (int i = 0; i < names.size(); i++) {
    String name = names.get(i);
    System.out.println("Hello, " + name + "!");
}

While this gets the job done, it can be verbose and prone to off-by-one errors. Now, let’s see how the for-each loop simplifies this:

List<String> names = Arrays.asList("Alice", "Bob", "Charlie", "David");

for (String name : names) {
    System.out.println("Hello, " + name + "!");
}

4. Structure of the for-each loop

for (Type variable : iterable) {
    // Loop Body
}
  • Type: The data type of the elements in the iterable.
  • Variable: A variable that represents the current element in each iteration.
  • Iterable: The collection, array, or iterable structure being traversed.

5. Flow of the for-each Loop

  1. Initialization: The loop initializes the variable with each element from the iterable.
  2. Loop Body: Executes the code within the loop body for each element in the iterable.
  3. Repeat: Steps 1 and 2 are repeated until all elements in the iterable have been processed.

example:

public class ForEachLoopExample {
    public static void main(String[] args) {
        // Create a list of integers
        List<Integer> numbers = new ArrayList<>();
        numbers.add(1);
        numbers.add(2);
        numbers.add(3);
        numbers.add(4);
        numbers.add(5);

        // Use a for-each loop to calculate the square of each number
        System.out.println("Original numbers: " + numbers);
        System.out.println("Squares:");

        for (int num : numbers) {
            int square = num * num;
            System.out.println(num + " squared is " + square);
        }
    }
}

output:

Original numbers: [1, 2, 3, 4, 5]
Squares:
1 squared is 1
2 squared is 4
3 squared is 9
4 squared is 16
5 squared is 25
  1. Initialization (List<Integer> numbers = new ArrayList<>();): Creates a list of integers and adds some values to it.
  2. For-Each Loop (for (int num : numbers) { ... }): Iterates over each element (num) in the numbers list.
  3. Loop Body:
    • Calculates the square of each number: int square = num * num;.
    • Prints the original number and its square.
  4. Repeat: The loop repeats for each element in the list.