Java for Loop with Examples


Introduction

In Java, the for loop is one of the most commonly used control flow statements for iteration. It allows you to execute a block of code repeatedly with a controlled number of iterations. Understanding the for loop is fundamental to effective Java programming, as it is essential for tasks like traversing arrays and collections, performing repetitive tasks, and implementing algorithms.

Table of Contents

  1. Java for Loop Syntax
  2. How for Loop Works
  3. Simple for Loop Example
  4. Using the Comma
  5. The For-Each Version of the for Loop
  6. for-each Loop with Break
  7. for-each Loop is Essentially Read-Only
  8. for-each - Iterating Over Multidimensional Arrays
  9. Search an Array Using for-each Style Example
  10. Nested for Loops

Java for Loop Syntax

The for loop in Java is a control flow statement that repeatedly executes a block of code as long as a specified condition is true. It is primarily used for iteration over arrays and collections.

Syntax:

for (initialization; condition; update) {
    // body of loop
}
  • Initialization: This step initializes the loop variable and is executed once.
  • Condition: This condition is evaluated before each iteration. If true, the loop body is executed.
  • Update: This step updates the loop variable after each iteration.

How for Loop Works

The for loop works by first executing the initialization statement, then checking the condition. If the condition is true, it executes the body of the loop, then performs the update statement, and repeats the process until the condition becomes false.

Simple for Loop Example

Here’s a simple example of a for loop that prints numbers from 1 to 5:

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

Explanation: This loop initializes i to 1, checks if i is less than or equal to 5, prints the value of i, and then increments i by 1.

Using the Comma

You can use the comma operator to include multiple initialization and update statements in a for loop.

Example:

public class ForLoopWithComma {
    public static void main(String[] args) {
        for (int i = 0, j = 10; i < j; i++, j--) {
            System.out.println("i: " + i + ", j: " + j);
        }
    }
}

Explanation: This loop initializes two variables, i and j, and updates both of them in each iteration until the condition i < j becomes false.

The For-Each Version of the for Loop

The for-each loop, introduced in Java 5, provides a simpler way to iterate over arrays and collections.

Syntax:

for (type variable : array) {
    // body of loop
}

Example:

public class ForEachLoopExample {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int num : numbers) {
            System.out.println(num);
        }
    }
}

Explanation: This loop iterates over each element in the numbers array and prints it.

for-each Loop with Break

You can use the break statement to exit the loop prematurely.

Example:

public class ForEachWithBreak {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int num : numbers) {
            if (num == 3) {
                break;
            }
            System.out.println(num);
        }
    }
}

Explanation: This loop prints numbers until it encounters 3, at which point it exits the loop.

for-each Loop is Essentially Read-Only

The for-each loop does not allow modifying the array or collection being iterated over.

Example:

public class ForEachReadOnly {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        for (int num : numbers) {
            num = num * 2; // This change is not reflected in the original array
        }
        for (int num : numbers) {
            System.out.println(num); // Prints original values
        }
    }
}

Explanation: The change to num is not reflected in the numbers array.

for-each - Iterating Over Multidimensional Arrays

The for-each loop can also be used to iterate over multidimensional arrays.

Example:

public class ForEachMultidimensional {
    public static void main(String[] args) {
        int[][] matrix = {
            {1, 2, 3},
            {4, 5, 6},
            {7, 8, 9}
        };
        for (int[] row : matrix) {
            for (int num : row) {
                System.out.print(num + " ");
            }
            System.out.println();
        }
    }
}

Explanation: This loop iterates over each row of the matrix and then over each element of the row.

Search an Array Using for-each Style Example

You can use the for-each loop to search for an element in an array.

Example:

public class SearchArrayForEach {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};
        int searchKey = 3;
        boolean found = false;
        for (int num : numbers) {
            if (num == searchKey) {
                found = true;
                break;
            }
        }
        if (found) {
            System.out.println("Element found in the array.");
        } else {
            System.out.println("Element not found in the array.");
        }
    }
}

Explanation: This loop searches for the element 3 in the array and prints a message if it is found.

Nested for Loops

A nested for loop is a for loop inside another for loop. This is useful for iterating over multidimensional arrays or implementing complex algorithms.

Example:

public class NestedForLoop {
    public static void main(String[] args) {
        for (int i = 1; i <= 3; i++) {
            for (int j = 1; j <= 3; j++) {
                System.out.println("i: " + i + ", j: " + j);
            }
        }
    }
}

Explanation: This loop iterates over pairs of i and j values, printing each pair.

Conclusion

The for loop is a powerful and flexible control flow statement in Java, essential for performing repetitive tasks and iterating over collections and arrays. Understanding its syntax and variations, including the for-each loop, is crucial for efficient Java programming.


Comments