Комментарии (1)
Ответ сгенерирован нейросетью и может содержать ошибки
Разница между 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, но продолжил работу дальше.
Сравнение в таблице
| Аспект | break | continue |
|---|---|---|
| Действие | Выход из цикла | Пропуск итерации |
| Выполнение кода после оператора | Нет | Нет (для текущей итерации) |
| Цикл продолжается | Нет | Да |
| Применение | for, while, do-while, switch | for, 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 для пропуска отдельных итераций.