Difference Between for loop and for-each ( Enhanced For Loop ) in Java

1. Introduction

In Java, loops are used to repeatedly execute a block of statements. The for loop is a traditional loop that provides explicit control over the initialization, termination, and incrementation of loop variables. The enhanced for loop, also known as the "for-each" loop, was introduced in Java 5 to simplify iteration over arrays and collections without requiring index variables.

2. Key Points

1. The for loop gives you control over each iteration's starting point, condition, and increment/decrement.

2. The enhanced for loop automatically iterates over all the elements of an array or a collection without using an index variable.

3. In a for loop, you can modify the loop variable and access the loop index.

4. The enhanced for loop is meant for reading each item in a collection or array, not for modifying the loop variable.

3. Differences

for loop enhanced for loop
The for loop requires initialization, condition, and update expression. The enhanced for loop simplifies iteration by hiding the loop control logic.
Offers more flexibility, allowing you to iterate over arrays or collections with more control over the index. Directly iterates over elements of arrays/collections, eliminating direct index access.
Can modify the array or collection being iterated over. Does not allow modifying the structure of the array or collection during iteration.
Based on a condition, it can iterate in any direction (forward, backward) or skip elements. Iterates sequentially through the array or collection, from the first element to the last.
More complex syntax, which can lead to errors in condition or update expressions. The simpler, cleaner syntax that reduces the possibility of programming errors.

4. Example

public class ForLoopComparison {
    public static void main(String[] args) {
        int[] numbers = {1, 2, 3, 4, 5};

        // Using traditional for loop
        System.out.println("Using traditional for loop:");
        for (int i = 0; i < numbers.length; i++) {
            // Step 1: Access each element by index
            System.out.println("Number: " + numbers[i]);

        // Using enhanced for loop
        System.out.println("\nUsing enhanced for loop:");
        for (int number : numbers) {
            // Step 2: Access each element directly
            System.out.println("Number: " + number);


Using traditional for loop:
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5
Using enhanced for loop:
Number: 1
Number: 2
Number: 3
Number: 4
Number: 5


1. The traditional for loop iterates over the array using an index to access each element, which allows for modification of the elements if needed.

2. The enhanced for loop iterates directly over each element of the array, simplifying the syntax as there is no need for an index variable.

5. When to use?

Use the traditional for loop when you need explicit control over the iteration, need to modify the elements, or do not iterate over an array or collection.

Use the enhanced for loop for simplicity and readability when you simply need to access each element of an array or collection without modifying them.