Часто требуется прерывать цикл или выполнение функции при выполнении некоторых условий и перейти на выполнение другого алгоритма или очередной итерации цикла. В Java имеются гибкие структурные средства для решения подобных проблем – это операторы break, continue, return, System.exit:
continue прерывание выполнения тела цикла и переход к следующей итерации текущего цикла,
continue меткапрерывание выполнения тела цикла и переход к следующей итерации цикла, помеченного меткой,
break выход из текущего цикла,
break меткавыход из цикла, помеченного меткой,
return выход из текущей функции (в том числе из тела цикла) без возвратазначения,
return значениевыход из текущей функции (в том числе из тела цикла) с возвратомзначения,
System.exit(n) выход из приложения с кодом завершенияn – целым числом, задаваемым программистом (n=0 – выход нормальный, в остальных случаях – аварийный). Перед своим завершением приложение сообщает операционной системе код завершения, чтобы программист смог установить, по какой причине произошел аварийный выход,
меткаидентификатор (имя), после которого ставится двоеточие. Метка может располагаться перед любым оператором. В этом случае оператор называется помеченным:
label_1: // метка
for (int i=1; i<=4; i++)
for (int j=1; j<=4; j++)
{
if (i==j)
continue label_1; // переход на метку label_1
System.out.println(“i=” + i + “ j=” +j);
}
В окне вывода появится:
i=2 j=1
i=3 j=1
i=3 j=2
i=4 j=1
i=4 j=2
i=4 j=3
При выполнении условия (i==j) внутренний цикл прерывается, и управление передается внешнему циклу – берется следующее значение i, а внутренний цикл сбрасывается на j=1.
label_1:
for (int i=1; i<=4; i++)
for (int j=1; j<=4; j++)
{
if (i!=j)
break label_1; // переход на метку label_1
System.out.println(“i=” + i + “ j=” +j);
}
В окне вывода появится:
i=1 j=1
При первом же выполнении условия (i!=j) прерывается цикл, перед которым стоит метка label_1, то есть внешний цикл, и программа заканчивает работу.
for (int i=1; i<=4; i++)
{
label_1:
for (int j=1; j<=4; j++)
{
if (i==j)
System.out.println(“i=” + i + “ j=” +j);
}
}
В окне вывода появится:
i=2 j=1
i=3 j=1
i=3 j=2
i=4 j=1
i=4 j=2
i=4 j=3
При первом же выполнении условия (i==j) прерывается цикл, перед которым стоит метка label_1, то есть внутренний цикл , и управление передается внешнему циклу – берется следующее значение i, а внутренний цикл сбрасывается на j=1. Такой же результат получается, если совсем убрать метку label_1 перед внутренним циклом:
for (int i=1; i<=4; i++)
for (int j=1; j<=4; j++)
{
if (i==j)
System.out.println(“i=” + i + “ j=” +j);
}
В повседневной практике обработки информации мы часто имеем дело с естественно организованными (объединенными) представлениями информации: текстами, списками, таблицами, анкетами. Такие организованные (структурированные) данные во многом облегчают их восприятие и обработку.
Естественная организация данных эффективно отражается в современных языках программирования понятием структур данных.
Под структурами данных понимаются специальным образом организованные совокупности данных, облегчающие реализацию алгоритма и их компьютерную обработку.
Отличительной особенность хорошо написанных программ является то, что данные в них организованы в определенные, наиболее подходящие для их хранения и обработки структуры, а сами программы являются лишь средством обработки этих структур независимо от их информационного содержания. Проектирование подходящих структур данных для их эффективной обработки программой столь же важно, и занятие это, возможно, более сложное, чем написание собственно операторов программы в соответствии с выбранным алгоритмом их обработки. Хорошо спроектированные структуры данных облегчают и ускоряют их обработку, улучшают понимание самой программы. Организация структур данных и их взаимодействия в объектно-ориентированном программировании занимает 95% объема времени написания программы.
К базовым структурам данных в Java относятся:
- переменные,
- массивы,
- строки,
- файлы.
Понятие переменных было введено раньше – это структура данных, состоящая из отдельных элементов, каждый из которых имеет имя, тип и конкретное значение.