← Назад к вопросам

В чем разница между break и continue?

1.0 Junior🔥 221 комментариев
#Основы Java

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Разница между break и continue

break и continue — это операторы управления потоком выполнения цикла. Они выглядят похожими, но работают по-разному.

break — полный выход из цикла

break полностью прерывает выполнение цикла и передаёт управление на следующую строку кода после цикла.

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        break;  // Выход из цикла
    }
    System.out.println(i);
}
System.out.println("После цикла");

// Вывод:
// 0
// 1
// 2
// 3
// 4
// После цикла

Цикл остановился на i=5 и полностью завершил работу.

continue — пропуск текущей итерации

continue пропускает остаток текущей итерации и переходит к следующей итерации цикла.

for (int i = 0; i < 10; i++) {
    if (i == 5) {
        continue;  // Пропуск текущей итерации
    }
    System.out.println(i);
}
System.out.println("После цикла");

// Вывод:
// 0
// 1
// 2
// 3
// 4
// 6
// 7
// 8
// 9
// После цикла

Цикл пропустил i=5, но продолжил работу дальше.

Сравнение в таблице

Аспектbreakcontinue
ДействиеВыход из циклаПропуск итерации
Выполнение кода после оператораНетНет (для текущей итерации)
Цикл продолжаетсяНетДа
Применениеfor, while, do-while, switchfor, while, do-while

Практические примеры

Поиск элемента (использование break):

int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
int target = 7;
int index = -1;

for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] == target) {
        index = i;
        break;  // Нашли элемент, дальше искать не нужно
    }
}

System.out.println("Индекс: " + index);  // 6

Фильтрация данных (использование continue):

int[] numbers = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};

// Вывести только чётные числа
for (int i = 0; i < numbers.length; i++) {
    if (numbers[i] % 2 != 0) {
        continue;  // Пропускаем нечётные
    }
    System.out.println(numbers[i]);
}

// Вывод: 2, 4, 6, 8, 10

break с метками

В Java можно использовать метки для break, чтобы выходить из вложенных циклов:

outer: for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (i == 1 && j == 1) {
            break outer;  // Выход из внешнего цикла
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}

// Вывод:
// i=0, j=0
// i=0, j=1
// i=0, j=2
// i=1, j=0

continue с метками

continue с метками переходит к следующей итерации помеченного цикла:

outer: for (int i = 0; i < 3; i++) {
    for (int j = 0; j < 3; j++) {
        if (j == 1) {
            continue outer;  // Переход к следующей итерации внешнего цикла
        }
        System.out.println("i=" + i + ", j=" + j);
    }
}

// Вывод:
// i=0, j=0
// i=1, j=0
// i=2, j=0

В контексте Stream API

В современном Java с потоками используются фильтры вместо break/continue:

List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

// Вместо continue:
numbers.stream()
    .filter(n -> n % 2 == 0)
    .forEach(System.out::println);

// Вместо break (сложнее, обычно используют findFirst):
Integer found = numbers.stream()
    .filter(n -> n > 5)
    .findFirst()
    .orElse(null);

Резюме

  • break — полный выход из цикла
  • continue — пропуск текущей итерации и переход к следующей
  • Метки позволяют работать с вложенными циклами
  • Stream API предлагает более функциональный подход к фильтрации и поиску

Выбор между ними зависит от логики программы: используй break для полного прерывания и continue для пропуска отдельных итераций.

В чем разница между break и continue? | PrepBro