Does Java support goto?

Java does not support goto, it is reserved as a keyword just in case they wanted to add it to a later version.

  • Unlike C/C++, Java does not have goto statement, but java supports label.
  • The only place where a label is useful in Java is right before nested loop statements.
  • We can specify label name with break to break out a specific outer loop.
  • Similarly, label name can be specified with continue.

Using break with label in Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to illustrate
// using label  and break
// instead of goto
  
// file name: Main.java
public class Main {
    public static void main(String[] args)
    {
  
    // label for outer loop
    outer:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (j == 1)
                    break outer;
                System.out.println(" value of j = " + j);
            }
        } // end of outer loop
    } // end of main()
} // end of class Main

chevron_right


Output:



value of j = 0

Using continue with label in Java

We can also use continue instead of break. See following program for example.

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code to illustrate
// using label  and continue
// instead of goto
  
// file name: Main.java
public class Main {
    public static void main(String[] args)
    {
  
    // label for outer loop
    outer:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (j == 1)
                    continue outer;
                System.out.println(" value of j = " + j);
            }
        } // end of outer loop
    } // end of main()
} // end of class Main

chevron_right


Output:

value of j = 0
 value of j = 0
 value of j = 0
 value of j = 0
 value of j = 0
 value of j = 0
 value of j = 0
 value of j = 0
 value of j = 0
 value of j = 0

Explanation : Since continue statement skips to the next iteration in the loop, it iterates for 10 times as i iterates from 0 to 9. So the outer loop executes for 10 times and the inner for loop executes 1 time in each of the outer loops.

Java does not have a goto statement because it provides a way to branch in an arbitrary and unstructured manner. This usually makes goto-ridden code hard to understand and hard to maintain. It also prohibits certain compiler optimization. There are, however, a few places where the goto is a valuable and legitimate construct for flow control. For example, the goto can be useful when you are exiting from a deeply nested set of loops. To handle such situations, Jave defines an expanded form of the break statement.

The general form of the labelled break statement is:

break label;

Example 1:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code
public class Label_Break1 {
  
    public static void main(String[] args)
    {
  
        boolean t = true;
    first : {
    second : {
    third : {
        System.out.println("Before the break");
        if (t) // break out of second block
            break second;
    }
        System.out.println("This won't execute");
    }
        System.out.println("This is after the second block");
    }
    }
}
// This code is contributed by Sagar Gupta

chevron_right


Output:

Before the break
This is after the second block

Example 2:

filter_none

edit
close

play_arrow

link
brightness_4
code

// Java code
public class Label_Break2 {
  
    public static void main(String[] args)
    {
  
    outer:
        for (int i = 0; i < 3; i++) // label
        {
            System.out.print("Pass " + i + ": ");
            for (int j = 0; j < 100; j++) {
                if (j == 10) {
                    break outer; // Exit both loops
                }
                System.out.print(j + " ");
            }
            System.out.println("This will not be printed");
        }
        System.out.println("Loops Complete.");
    }
}
// This code is contributed by Sagar Gupta

chevron_right


Output:

Pass 0: 0 1 2 3 4 5 6 7 8 9 Loops Complete.

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



Article Tags :
Practice Tags :


16


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.