Рубрики

Поддерживает ли Java goto?

Java не поддерживает goto, она зарезервирована как ключевое слово на тот случай, если они захотят добавить его в более позднюю версию.

  • В отличие от C / C ++, Java не имеет оператора goto, но java поддерживает метку .
  • Единственное место, где метка полезна в Java — это прямо перед операторами вложенного цикла.
  • Мы можем указать имя метки с помощью break, чтобы разорвать конкретный внешний цикл.
  • Точно так же имя метки может быть указано с помощью continue.

Использование разрыва с меткой в Java

// Java-код для иллюстрации
// используя label и break
// вместо перехода

  
// имя файла: Main.java

public class Main {

    public static void main(String[] args)

    {

  

    // метка для внешнего цикла

    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);

            }

        } // конец внешнего цикла

    } // конец main ()

} // конец класса Main

Выход:

value of j = 0

Использование продолжить с меткой в Java

Мы также можем использовать продолжить вместо перерыва. Смотрите следующую программу для примера.

// Java-код для иллюстрации
// используя метку и продолжаем
// вместо перехода

  
// имя файла: Main.java

public class Main {

    public static void main(String[] args)

    {

  

    // метка для внешнего цикла

    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);

            }

        } // конец внешнего цикла

    } // конец main ()

} // конец класса Main

Выход:

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

Объяснение: Так как оператор continue пропускает следующую итерацию в цикле, он повторяется 10 раз, а i повторяется от 0 до 9. Таким образом, внешний цикл выполняется 10 раз, а внутренний цикл for выполняется 1 раз в каждом из внешних циклов.

В Java нет оператора goto, поскольку он обеспечивает способ ветвления произвольным и неструктурированным образом. Это обычно затрудняет понимание и поддержку поддерживаемого кода. Это также запрещает определенную оптимизацию компилятора. Однако есть несколько мест, где goto является ценной и законной конструкцией для управления потоком. Например, goto может быть полезно, когда вы выходите из глубоко вложенного набора циклов. Чтобы справиться с такими ситуациями, Jave определяет расширенную форму оператора break.

Общая форма помеченного оператора break:

break label;

Пример 1:

// Java-код

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 second;

    }

        System.out.println("This won't execute");

    }

        System.out.println("This is after the second block");

    }

    }

}
// Этот код предоставлен Сагаром Гуптой

Выход:

Before the break
This is after the second block

Пример 2:

// Java-код

public class Label_Break2 {

  

    public static void main(String[] args)

    {

  

    outer:

        for (int i = 0; i < 3; i++) // метка

        {

            System.out.print("Pass " + i + ": ");

            for (int j = 0; j < 100; j++) {

                if (j == 10) {

                    break outer; // Выходим из обоих циклов

                }

                System.out.print(j + " ");

            }

            System.out.println("This will not be printed");

        }

        System.out.println("Loops Complete.");

    }

}
// Этот код предоставлен Сагаром Гуптой

Выход:

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

Пожалуйста, пишите комментарии, если вы обнаружите что-то неправильное или вы хотите поделиться дополнительной информацией по обсуждаемой выше теме.

Рекомендуемые посты:

Поддерживает ли Java goto?

0.00 (0%) 0 votes