Loops in Java – GeeksforGeeks

Looping in programming languages is a feature which facilitates the execution of a set of instructions/functions repeatedly while some condition evaluates to true. Java provides three ways for executing the loops. While all the ways provide similar basic functionality, they differ in their syntax and condition checking time.

  • while loop: A while loop is a control flow statement that allows code to be executed repeatedly based on a given Boolean condition. The while loop can be thought of as a repeating if statement. 

Syntax :

while (boolean condition)
{
   loop statements...
}
  • Flowchart: while loop
    • While loop starts with the checking of condition. If it evaluated to true, then the loop body statements are executed otherwise first statement following the loop is executed. For this reason it is also called Entry control loop
    • Once the condition is evaluated to true, the statements in the loop body are executed. Normally the statements contain an update value for the variable being processed for the next iteration.
    • When the condition becomes false, the loop terminates which marks the end of its life cycle.
  • for loop: for loop provides a concise way of writing the loop structure. Unlike a while loop, a for statement consumes the initialization, condition and increment/decrement in one line thereby providing a shorter, easy to debug structure of looping. 

Syntax:

for (initialization condition; testing condition; 
                              increment/decrement)
{
    statement(s)
}
  • Flowchart: for-loop-in-java
    • Initialization condition: Here, we initialize the variable in use. It marks the start of a for loop. An already declared variable can be used or a variable can be declared, local to loop only.
    • Testing Condition: It is used for testing the exit condition for a loop. It must return a boolean value. It is also an Entry Control Loop as the condition is checked prior to the execution of the loop statements.
    • Statement execution: Once the condition is evaluated to true, the statements in the loop body are executed.
    • Increment/ Decrement: It is used for updating the variable for next iteration.
    • Loop termination:When the condition becomes false, the loop terminates marking the end of its life cycle.
  • do while: do while loop is similar to while loop with only difference that it checks for condition after executing the statements, and therefore is an example of Exit Control Loop. 

Syntax:

do
{
    statements..
}
while (condition);
  • Flowchart: do-while
    • do while loop starts with the execution of the statement(s). There is no checking of any condition for the first time.
    • After the execution of the statements, and update of the variable value, the condition is checked for true or false value. If it is evaluated to true, next iteration of loop starts.
    • When the condition becomes false, the loop terminates which marks the end of its life cycle.
    • It is important to note that the do-while loop will execute its statements atleast once before any condition is checked, and therefore is an example of exit control loop.

Pitfalls of Loops

  • Infinite loop: One of the most common mistakes while implementing any sort of looping is that it may not ever exit, that is the loop runs for infinite time. This happens when the condition fails for some reason. Examples: 

Tóm Tắt

Java




public class LooppitfallsDemo

{

    public static void main(String[] args)

    {

 

        

        

        for (int i = 5; i != 0; i -= 2)

        {

            System.out.println(i);

        }

        int x = 5;

 

        

        

        while (x == 5)

        {

            System.out.println("In the loop");

        }

    }

}



Another pitfall is that you might be adding something into you collection object through loop and you can run out of memory. If you try and execute the below program, after some time, out of memory exception will be thrown. 

Java




import java.util.ArrayList;

public class Integer1

{

    public static void main(String[] args)

    {

        ArrayList<Integer> ar = new ArrayList<>();

        for (int i = 0; i < Integer.MAX_VALUE; i++)

        {

            ar.add(i);

        }

    }

}



Output:

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Unknown Source)
at java.util.Arrays.copyOf(Unknown Source)
at java.util.ArrayList.grow(Unknown Source)
at java.util.ArrayList.ensureCapacityInternal(Unknown Source)
at java.util.ArrayList.add(Unknown Source)
at article.Integer1.main(Integer1.java:9)

This article is contributed by Rishabh Mahrsee. If you like GeeksforGeeks and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to [email protected]. See your article appearing on the GeeksforGeeks main page and help other Geeks. Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

My Personal Notes

arrow_drop_up