Control Statements in Java: Types, Flowcharts, and Code Examples

By Rohan Vats

Updated on Aug 07, 2025 | 10 min read | 11.45K+ views

Share:

Did you know? Java 21, with its Long-Term Support (LTS) release, brings exciting new control flow features! 

Pattern matching for switch statements makes your decision-making code more concise, clear, and expressive than ever before.

Control statements in Java are fundamental to programming because they dictate the flow of execution, enabling your programs to make decisions and repeat tasks efficiently. 

Imagine building a banking app that approves transactions only if the user has sufficient funds. That decision-making relies heavily on control statements. These statements allow the program to evaluate conditions and decide which actions to perform, ensuring accurate and secure processing of each transaction.

In this article, you'll learn how to optimize control statements in Java, helping you write cleaner, faster, and more reliable code.

Improve your understanding of different programming languages like Java with upGrad’s online software development courses. Learn how to choose the right programming language for your specific requirements! 

What Are Control Statements in Java? Types and Examples

Control statements in Java are essential constructs that manage the flow of program execution by directing the order in which code blocks run. They enable conditional branching, allowing the program to choose different paths based on evaluated expressions, and facilitate repetitive execution through loops. 

Working with control statements in Java isn't just about understanding theory. You need practical experience to apply these concepts and manage program flow efficiently. Here are three programs that can help you:

By default, Java executes code line by line from top to bottom, left to right. However, control statements in Java let you change this flow by deciding whether certain blocks of code should run based on conditions or loops.

For example, the if statement is a decision-making control structure that executes code only when a specified condition is true. Since Java is case-sensitive, keywords like if must be written in lowercase. Inside the if block, you can perform actions such as printing variable values to monitor the program’s behavior.

Now that you have a good understanding of control statements in Java, let’s look at the different types of control statements in Java.

1. Sequence Structure

Coverage of AWS, Microsoft Azure and GCP services

Certification8 Months

Job-Linked Program

Bootcamp36 Weeks

This structure refers to the sequential execution of statements one after the other, as specified in the code. This is the default structure built into Java wherein the statements are executed one after the other from beginning to end unless instructed otherwise.

For example, a simple program that prints "Hello" followed by "World" will execute in sequence, printing "Hello" first and "World" second: 

System.out.println("Hello");
System.out.println("World");

Output: 

Hello
World

In real-life applications, the sequence structure is often used for straightforward tasks that don’t require decision-making or repetition, like initialization steps, simple calculations, or logging information. 

For example, when initializing variables or setting up initial configurations in your program, the sequence structure ensures that the steps happen in the correct order.

Also Read: Is Java Easy to Learn? Key Factors to Consider

Having trouble getting a solid foundation in Java? Enroll in upGrad’s free Core Java Basics course and start building strong coding skills today. Learn variables, data types, loops, and OOP principles from the ground up!

2. Selection Structure

This structure will let us choose a path based on a given condition. Java has three types of Selection statements, namely, if statement, if-else-statement, and switch statement. Selection statements are also called as decision-making statements. If and switch statements allow you to control the program execution flow based on the condition at runtime.

  • If Statement

This statement allows the program to start, reach a decision based on the set condition. This means a code can or cannot be executed.

Example:

if (x < 20) {
    System.out.println("Hello Universe!");
}

Example output:

Hello Universe!

If x = 25, there will be no output.

  • If-else Statement

The program starts and reads the decision based on the set condition and continues to do one thing or another and concludes.

Example:

if (x < 20) {
    System.out.println("Hello Universe!");
} else {
    System.out.println("Hello folks!");
}

Example outputs:

For x = 15:
Hello Universe!

For x = 25:
Hello folks!

  • Switch or Break Statement

Subscribe to upGrad's Newsletter

Join thousands of learners who receive useful tips

Promise we won't spam!

A switch statement allows the program to select one of many possible execution paths based on the value of a variable. Each case corresponds to a specific value, and the program executes the code under the matching case until it encounters a break statement, which exits the switch. If no case matches, the default case is executed.
Example:

String dayName;
int dayNumber = 2;  // Example input

switch (dayNumber) {
    case 1:
        dayName = "Monday";
        break;
    case 2:
        dayName = "Tuesday";
        break;
    case 3:
        dayName = "Wednesday";
        break;
    default:
        dayName = "Any other Day";
        break;
}

System.out.println(dayName);

Example output:

For dayNumber = 2, the output will be:
Tuesday

If dayNumber = 5, the output will be:
Any other Day

If you're finding it tough to break down complex problems efficiently, check out upGrad’s Data Structures & Algorithms free course to strengthen your foundation and start solving challenges with ease. Start today!

Also Read: Learn 50 Java Projects With Source Code (2025 Edition)

3. Repetition Structure

The Repetition Structure in Java allows you to execute code statements multiple times, or even zero times, depending on a specified condition. This structure is fundamental for performing repetitive tasks within a program, such as iterating through a list of items or executing code until a certain condition is met.

In Java, there are three main types of looping statements that enable repetition:

  • For Loop
  • While Loop
  • Do-While Loop

These loops allow you to repeat one or more statements a set number of times, or as long as a specific condition remains true. Each loop follows a four-part structure:

  • Initialization: Setting up the loop control variable (e.g., starting a counter).
  • Condition Checking: Evaluating a condition to decide whether to continue the loop or exit.
  • Execution: Executing the code block inside the loop.
  • Increment/Decrement: Modifying the loop control variable, usually after each iteration.

For Loop

This statement is used when the number of iterations is known before entering the loop. This loop is used to evaluate the initial value statements to the final value with a given increment/decrement.

For Loop flow:

  1. Initialization: Set the starting value for the loop control variable.
  2. Test Condition: Check if the condition is true. If true, execute the loop body; if false, exit the loop.
  3. Loop Body: Execute the code inside the loop.
  4. Increment/Decrement: Modify the loop control variable (e.g., i++).
  5. Repeat: Return to the test condition. Repeat steps 2-4 until the condition is false.

Example: Counting from 1 to 20

for (int m = 1; m <= 20; m = m + 1) {
    System.out.println(m);
}

How it works: Starts with m = 1 and prints the value of m. Then it increments m by 1 each time, repeating until m is greater than 20.

Output:

1
2
3
...
19
20

While Loop

A while loop repeatedly executes a block of code as long as the given condition remains true. It starts with an initial value and continues looping, incrementing or decrementing the control variable until the condition becomes false.

While Loop flow:

  1. Test Condition: Check if the condition is true. If true, execute the loop body; if false, exit the loop.
  2. Loop Body: Execute the code inside the loop.
  3. Increment/Decrement: Modify the loop control variable (e.g., i++).
  4. Repeat: Return to the test condition. Repeat steps 1-3 until the condition is false.

Example : Print values from 1 to 10

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

Expected Output:

1
2
3
4
5
6
7
8
9
10

do while loop

A do-while loop executes the block of code at least once before checking the condition. It continues to repeat the loop as long as the condition remains true. This is useful when you want the loop body to run before any condition is tested.

Do-While Loop flow:

  1. Loop Body: Execute the code inside the loop at least once.
  2. Test Condition: After the loop body executes, check if the condition is true. If true, repeat the loop; if false, exit the loop.
  3. Increment/Decrement: Modify the loop control variable (e.g., i++).
  4. Repeat: Return to the test condition. Repeat steps 2-3 until the condition is false.

Example : Calculating the sum of numbers from 1 to 10

class DoWhileExample {
    public static void main(String[] args) {
        int i = 1;
        int sum = 0;

        do {
            sum = sum + i;
            i++;
        } while (i <= 10);

        System.out.println("\nThe sum of 1 to 10 is: " + sum);
    }
}

Expected Output:

The sum of 1 to 10 is: 55

One of the major differences between the while loop and the do-while loop is that in a do-while loop, you will be executing the body of the loop initially and then check the condition. the do-while loop executes the block of the statement even when the condition fails, and it executes one time.

Feeling stuck in your Java development journey and looking to take your skills to the next level? Enroll in the AI-Powered Full Stack Development Course by IIITB by upGrad and learn how to become a 10x developer with AI in 9 months! Start today!

After understanding selection and repetition, branching statements in Java provide further control over program flow by allowing you to break, continue, or return.

What are Branching Statements?

When working with loops in Java, there are situations where you may want to skip certain iterations or exit the loop immediately. This is where branching statements like break, continue, and return come into play. 

They control the flow by either terminating loops or skipping parts of them, allowing more precise execution control.

  • Break: Immediately exits the nearest enclosing loop or switch statement, transferring control to the code following the loop or switch block. It effectively stops the loop before the normal condition fails.
  • Continue: Skips the remaining code in the current iteration and moves to the next iteration of the loop. For do-while loops, control moves to the test condition; for other loops, it moves to the update expression.
  • Return: Exits from the current method, optionally returning a value. It stops all further execution within the method.

1. Break Statements

The break statement in Java has two forms: unlabeled and labeled. The unlabeled break is commonly used to exit loops (while, do-while) or switch blocks immediately. Without a break inside a switch case, execution continues (“falls through”) to the next case, which can lead to unintended results.

The switch statement works like an if-else, selecting code to execute based on the input value.

  • Start: The loop or switch statement begins execution.
  • Condition Met? Is the condition for the break statement true (e.g., a specific value is reached or a condition is satisfied)?
    • Yes: Exit the loop or switch immediately, skipping the remaining iterations or cases.
    • No: Continue the loop or switch until the condition is met.
  • End: The program continues execution after the loop or switch statement.

For instance, passing a marks integer to switch will print the matched case message, but if no break is present, it continues to the next case and eventually the default.

Example:

public class BreakDemo {

    public static void main(String[] args) {

        String str1 = args[0];

        int marks = Integer.parseInt(str1);

        switch(marks) {
            case 95:
                System.out.println("Your marks: " + marks + " and rank is A");
                break;

            case 80:
                System.out.println("Your marks: " + marks + " and rank is B");
                break;

            case 70:
                System.out.println("Your marks: " + marks + " and rank is C");
                break;

            default:
                System.out.println("Your marks: " + marks + " and rank is FAIL");
                break;
        }
    }
}

Example Outputs:

  • If you run:

    java BreakDemo 95

Output:

Your marks: 95 and rank is A

  • If you run:

    java BreakDemo 80

Output:

Your marks: 80 and rank is

  • If you run:

    java BreakDemo 65

Output:

Your marks: 65 and rank is FAIL

2. Continue Statement

The continue statement is used inside loops to skip the current iteration and proceed to the next one. Instead of exiting the loop entirely (like with break), continue allows you to skip the remaining code in the current iteration and go back to the loop’s condition check or increment/decrement step.

  • Start: The loop begins execution.
  • Condition Met? Is the condition for the continue statement true (e.g., a specific value is reached or a condition is satisfied)?
    • Yes: Skip the remaining code in the current iteration and proceed to the next iteration.
    • No: Continue executing the loop as usual.
  • Repeat: Move to the next iteration or condition check, repeating steps until the loop exits.
  • End: The loop finishes execution once the condition becomes false or the loop ends naturally.

This example is to print odd numbers. The continue statement skips the iteration of for, while loops.

Example:

public class ContinueDemo {

    public static void main(String[] args) {

        for (int i = 1; i <= 10; i++) {

            if (i % 2 == 0) continue;

            System.out.println("Odd number " + i);
        }
    }
}

Output:

Odd number 1
Odd number 3
Odd number 5
Odd number 7
Odd number 9

You can also build relevant Java skills for advanced web development with upGrad’s Master of Design in User Experience. You’ll learn to create user-centered designs that are innovative, efficient, and aligned with current industry trends, ensuring that your designs are not only functional but also impactful.

Also Read: Careers in Java: How to Make a Successful Career in Java in 2025

3. Return Statements

The return statement is used to return the value from a method explicitly. The called class will process and transfer the control back to the caller of the method. The data type of the return value must match the type of methods declared return value. If a method is declared as void, it does not return a value.

  • Start: The method begins execution.
  • Is Return Statement Encountered?
    • Yes: Exit the method immediately, passing control back to the calling method. If the method has a return value, return it.
    • No: Continue executing the method.
  • Return Value Present?
    • Yes: Return the specified value (if the method is not void).
    • No: Simply exit (for void methods). 
  • End: The method finishes, and the control moves to the next statement in the calling method.

Example:

public class RectangleTest {
    public static void main(String[] args) {
        Rectangle rect = new Rectangle();
        rect.setDim(10, 5);
        int area = rect.getArea();
        System.out.println("Area of rectangle: " + area);
    }
}

class Rectangle {
    int length;
    int breadth;

    void setDim(int le, int br) {
        length = le;
        breadth = br;
    }

    int getArea() {
        return length * breadth;
    }
}

Expected Output:

Area of rectangle: 50

Explanation: Length = 10, Breadth = 5, so Area = 10 * 5 = 50.
Connecting the Control Structure and connect the statements control structures in two ways, one is by stacking, and the other is by nesting.
Control Statement Stacking

The entry point of one activity diagram can be connected to the exit point of another. For example, a sequence statement and a selection statement can be combined through stacking.

Looking to advance your Java multithreading skills? Check out upGrad’s Executive Program in Generative AI for Business Leaders, which will equip you with the skills needed to lead in AI-driven industries while mastering efficient concurrency with tools like the Runnable interface. Start today!

Focus on optimizing your code using efficient loop structures and control flows. To take it further, dive into design patterns and multithreading for building more scalable and efficient applications. 

How Can upGrad Help You Learn Java Programming?

Control statements in Java, like if, switch, and for loops are essential for building dynamic applications, such as creating an interactive login system or processing user inputs in a real-time chat application. However, you might face challenges in handling more complex decision trees or optimizing large-scale applications.

To improve, focus on mastering nested loops, branching logic, and refining control statements in Java. For further growth, upGrad’s Java courses offer hands-on experience and mentorship to tackle advanced challenges.

In addition to the courses mentioned above, here are some more free courses that can help you elevate your skills: 

Curious which courses can help you advance in Java development? upGrad’s personalized career guidance can help you explore the right learning path based on your goals. You can also visit your nearest upGrad center and start hands-on training today!  

Boost your career with our popular Software Engineering courses, offering hands-on training and expert guidance to turn you into a skilled software developer.

Master in-demand Software Development skills like coding, system design, DevOps, and agile methodologies to excel in today’s competitive tech industry.

Stay informed with our widely-read Software Development articles, covering everything from coding techniques to the latest advancements in software engineering.

Reference:
https://docs.oracle.com/en/java/javase/21/  

Frequently Asked Questions (FAQs)

1. How do I decide which control statement to use for complex decision-making in Java?

When deciding which control statement in Java to use, consider the complexity of the decision. Use if-else or switch statements for simple conditions. For complex decisions with multiple conditions, if-else if or switch with multiple cases are more effective. For complex loops or repeated conditions, use for or while loops. Always prioritize readability and performance when choosing between control structures.

2. What are common pitfalls when using nested loops, and how can I avoid them?

One common pitfall when using nested loops in control statements in Java is performance issues, as nested loops can significantly increase execution time, especially for large data sets. To avoid this, minimize the depth of nesting by refactoring logic into smaller methods or using algorithms that reduce complexity. Also, ensure that the inner loop has an appropriate exit condition to avoid unnecessary iterations.

3. When should I use a while loop instead of a for loop in Java?

Use a while loop when you don’t know the number of iterations in advance, or when the loop needs to continue until a specific condition is met, such as waiting for user input. In contrast, a for loop is more suited for situations where you know the number of iterations beforehand, such as iterating through a fixed-size array or list. Both are control statements in Java, but choosing one depends on the problem’s nature.

4. How does the continue statement affect loop execution, and when is it best applied?

The continue statement in control statements in Java skips the remaining code in the current iteration of a loop and proceeds to the next iteration. It’s best applied when you want to skip certain iterations under specific conditions, like filtering out unwanted values. Using it improves clarity and avoids unnecessary nested if-else conditions, making your code cleaner and more efficient.

5. How can I prevent infinite loops when using do-while in real applications

To prevent infinite loops when using do-while loops in control statements in Java, ensure that the loop condition will eventually become false by updating the loop control variable inside the loop. You can also include a safety check, such as a maximum iteration counter, to prevent endless loops. Properly managing the condition and loop variable will ensure that your application runs as expected without falling into infinite execution.

6. Can switch statements in Java handle string values efficiently, and what version supports this?

Yes, switch statements in Java can handle string values efficiently starting from Java 7. The introduction of string-based case labels made the switch statement more versatile and allowed for cleaner, more readable decision-making code. Java 7 and later versions support this feature, enabling you to match string values directly in the switch case without resorting to multiple if-else conditions, improving both efficiency and clarity.

7. How do control statements in Java influence exception handling and program stability?

Control statements in Java can greatly influence exception handling by allowing you to validate inputs and conditions before executing critical code. For instance, an if statement can be used to check if a file exists before attempting to read it, preventing FileNotFoundException. By incorporating control flow before risky operations, you can ensure better program stability and avoid exceptions that may cause your program to terminate unexpectedly.

8. What strategies can help optimize large switch-case blocks for better performance?

To optimize large switch-case blocks in control statements in Java, you can group related cases together and reduce the number of case evaluations by sorting the cases based on frequency. You can also replace large switches with hash maps for constant-time lookups, or consider polymorphism if the logic is complex, replacing the switch with dynamic method dispatch. These strategies improve performance and readability, especially in large applications.

9. How can I debug issues caused by complex control flows in Java?

Debugging complex control statements in Java can be tricky. Use logging to track the flow of execution at key decision points, like before entering a loop or after an if condition. Step-through debugging with breakpoints helps visualize which branches of your control flow are executed. Additionally, refactor complex conditions into smaller methods to isolate and test specific parts of the logic, making it easier to identify errors.

10. What are best practices for using break statements in nested loops?

When using the break statement in nested loops in control statements in Java, ensure you’re only breaking out of the innermost loop to avoid confusion. If you need to break out of multiple loops, use labeled breaks for clarity. Always document your use of break statements clearly to ensure others can understand the flow. Overusing breaks can reduce readability, so use them sparingly and consider refactoring if you need to break out of several loops.

11. How do control statements in Java impact multi-threaded applications?

In multi-threaded applications, control statements in Java must be carefully used to avoid race conditions or deadlocks. For example, synchronization control statements, like synchronized blocks, help manage thread access to shared resources, ensuring that only one thread modifies data at a time. Properly using control statements in a multi-threaded environment helps maintain thread safety and ensures your program remains stable and performs efficiently across threads.

Rohan Vats

408 articles published

Rohan Vats is a Senior Engineering Manager with over a decade of experience in building scalable frontend architectures and leading high-performing engineering teams. Holding a B.Tech in Computer Scie...

Get Free Consultation

+91

By submitting, I accept the T&C and
Privacy Policy

India’s #1 Tech University

Executive PG Certification in AI-Powered Full Stack Development

77%

seats filled

View Program

Top Resources

Recommended Programs

upGrad

upGrad KnowledgeHut

Professional Certificate Program in UI/UX Design & Design Thinking

#1 Course for UI/UX Designers

Bootcamp

3 Months

upGrad

upGrad

AI-Driven Full-Stack Development

Job-Linked Program

Bootcamp

36 Weeks

IIIT Bangalore logo
new course

Executive PG Certification

9.5 Months