Урок 5

Операторы перехода


1. Применение оператора break

Завершает последовательность операторов в операторе switch.

Его можно использовать для выхода из цикла.

Можно применять в качестве "цивилизованной" формы оператора безусловного перехода goto.

Пример 1. Применение оператора break для выхода из цикла

public class BreakLoop1 {
    public static void main(String[] args) {
        int i = 0, n = 100;

        while (i < n) {
            if (i == 10) {
                break;
            }
            System.out.println("i: " + i++);
        }
        System.out.println("Loop complete.");
    }
}
Если в программе применяется ряд вложенных циклов, то оператор break осуществляет выход только из самого внутреннего цикла. Например:

Пример 2. Применение оператора break для выхода из внутреннего цикла

public class BreakLoop2 {
    public static void main(String[] args) {
        for (int i = 0; i < 3; i++) {
            System.out.print("Пpoxoд " + i + " : ");
            for (int j = 0; j < 100; j++) {
                if (j == 10) {
                    break;
                }
                System.out.print(j + " ");
            }
            System.out.println();
        }
        System.out.println("Циклы завершены");
    }
}
  1. В цикле можно использовать больше одного оператора break. (Но лучше этого не делать.)
  2. Оператор break, завершающий последовательность операторов, выполняемых в цикле, оказывает влияние только на данный цикл.
  3. Оператор break не предназначен в качестве обычного средства выхода из цикла. Для этого служит условное выражение в цикле. Этот оператор следует использовать для выхода из цикла только в особых случаях.

2. Применение оператора break с меткой

Общая форма оператора break с меткой:
break метка;

Где метка - это имя метки, обозначающее блок кода. Им может быть как самостоятельный блок кода, так и целевой блок другого оператора. Чтобы пометить блок, достаточно поместить в его начале метку.

Метка – это любой допустимый в Java идентификатор с двоеточием.
Может использоваться в качестве цивилизованной формы оператора goto.

Пример 3. Применение break с меткой для выхода из вложенных циклов

public class BreakLoop3 {
    public static void main(String[] args) {
        boolean t = true;
        first:
        {
            second:
            {
                third:
                {
                    System.out.println("Before the break.");
                    if (t) {
                        break second; // break out of second block
                    }
                    System.out.println("This won't execute");
                }
                System.out.println("This won't execute");

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

Пример 4. Применение break с меткой для выхода из вложенных циклов

public class BreakLoop4 {
    public static void main(String[] args) {
        outer:
        for (int i = 0; i < 3; i++) {
            System.out.print("Пpoxoд " + i + " : ");
            for (int j = 0; j < 100; j++) {
                if (j == 10) {
                    break outer; // выход из обоих циклов
                }
                System.out.print(j + " ");
            }
            System.out.println("Этa строка не будет выводиться");
        }
    }
}

2. Применение оператора continue

Используется в тех случаях когда требуется, чтобы повторение цикла осуществлялось с более раннего оператора в его теле.

В циклах while и do-while оператор continue вызывает передачу управления непосредственно условному выражению, управляющему циклом.

В цикле for управление передается вначале итерационной части цикла for, а затем условному выражению.

Пример 5. Использование оператора continue

public class Continue {
    public static void main(String[] args) {
        for (int i = 0; i < 10; i++) {
            if (i % 2 == 0) {
                continue;
            }
            System.out.print(i + " ");
        }
    }
}

Пример 6. Использование оператора continue с меткой

public class ContinueLabel {
    public static void main(String[] args) {
        outer:
        for (int i = 0; i < 10; i++) {
            for (int j = 0; j < 10; j++) {
                if (j > i) {
                    System.out.println();
                    continue outer;
                }
                System.out.print(" " + (i * j));
            }
        }
        System.out.println();
    }
}

3. Оператор return

Оператор return используется для выполнения явного возврата из метода. 

Пример 7. Применение оператора return

public class Return1 {
    public static void main(String[] args) {
        boolean t = true;
        System.out.println("Дo возврата.");
        if (t) {
            return; // возврат в вызывающий код
        }
        System.out.println("Этот оператор выполняться не будет.");
    }
}

Пример 8. Применение оператора return

public class Return2 {
    public static void main(String[] args) {
        double d = getRandomValue(3);
        System.out.println(d);
    }

    public static double getRandomValue(int i) {
        return Math.random() * i;
    }
}

4. Оператор System.exit(0)

Пример 9. Применение System.exit(0)

public class SysExit {
    public static void main(String[] args) {
        System.out.println("Дo возврата.");
        method1(true);
        System.out.println("Этoт оператор выполняться не будет.");
    }

    public static void method1(boolean t) {
        if (t) {
            System.exit(0);
        }
        System.out.println("Этoт оператор метода выполняться не будет.");
    }
}


0 comments
Leave your comment: