Архитектура Аудит Военная наука Иностранные языки Медицина Металлургия Метрология
Образование Политология Производство Психология Стандартизация Технологии


Конструкции безусловного перехода



Return

У ключевого слова return имеется два предназначения: оно указывает, какое значение возвращается методом (если только он не возвращает тип void), а также используется для немедленного выхода из метода.

Break и continue

В теле любого из циклов вы можете управлять потоком программы, используя специальные ключевые слова break и continue. Команда break завершает цикл, при этом оставшиеся операторы цикла не выполняются. Команда continue останавливает выполнение текущей итерации цикла и переходит к началу цикла, чтобы начать выполнение нового шага.

Метки

Метка представляет собой идентификатор с последующим двоеточием:

label1:

Единственное место, где в Java метка может оказаться полезной, — прямо перед телом цикла. Причем никаких дополнительных команд между меткой и телом цикла быть не должно. Причина помещения метки перед телом цикла может быть лишь одна — вложение внутри цикла другого цикла или конструкции выбора. Обычные версии break и continue прерывают только текущий цикл, в то время как их версии с метками способны досрочно завершать циклы и передавать выполнение в точку, адресуемую меткой:

label1: внешний-цикл { внутренний-цикл {

//...

break; // 1

//...

continue; // 2

//...

continue label1; // 3

//... break label1; // 4

}

}

В первом случае (1) команда break прерывает выполнение внутреннего цикла, и управление переходит к внешнему циклу. Во втором случае (2) оператор continue передает управление к началу внутреннего цикла. Но в третьем варианте (3) команда continue label1 влечет выход из внутреннего и внешнего циклов и возврат к метке label1. Далее выполнение цикла фактически продолжается, но с внешнего цикла. В четвертом случае (4) команда break label1 также вызывает переход к метке label1, но на этот раз повторный вход в итерацию не происходит. Это действие останавливает выполнение обоих циклов.

Конструкция выбора

С помощью конструкции switch осуществляется выбор из нескольких альтернатив, в зависимости от значения целочисленного выражения. Форма команды выглядит так:

switch(выражение) { case значение1: команда; break; case значение2: команда; break, case значениеЗ: команда; break; case значение4: команда; break; case значение5: команда; break;

//... default: оператор;

}

Здесь выражение — выражение, в результате вычисления которого получается число типа int, символ char или, начиная с версии Java 7, строка String. Команда switch сравнивает результат выражения с каждым последующим значением. Если обнаруживается совпадение, исполняется соответствующая команда (простая или составная). Если же совпадения не находится, исполняется команда после ключевого слова default.

Нетрудно заметить, что каждая секция case заканчивается командой break, которая передает управление к концу команды switch. Такой синтаксис построения конструкции switch считается стандартным, но команда break не является строго обязательной. Если она отсутствует, при выходе из секции будет выполняться код следующих секций case, пока в программе не встретится очередная команда break. Пример:

switch(c) { case 'a': case 'e':

case 'i': case 'о':

case 'u': System.out.print(" гласная" ); break;

case 'y':

case 'w': System.out.print(" Условно гласная" ); break;

default: System.out.print(" согласная" );

}

Инициализация массивов

Массив представляет собой последовательность объектов или примитивов, относящихся к одному типу, обозначаемую одним идентификатором.

Массивы определяются и используются с помощью оператора индексирования [ ]. Чтобы объявить массив, вы просто. указываете вслед за типом пустые квадратные скобки: int[] a;

Квадратные скобки также могут размещаться после идентификатора, эффект будет точно таким же: int a[];

Программисты Java используют обычно первый вариант, как более логичный, но возможно, второй вариант будет привычнее программистам, пришедшим из других языков (например, из С или С++).

После этого у нас появляется ссылка на массив, под который еще не было выделено памяти. Поэтому теперь его надо инициализировать отдельно.

a = new int[3];

/* здесь создается массив из трех чисел типа integer

* Обратите внимание, оператор new неприменим для

* создания примитивов вне массива

 */

Компиллятор автоматически заполнит такой массив значениями по умолчанию. Для чисел это 0, для символов '0', для boolean – false.

Массив можно инициализировать сразу в точке объявления:

либо так: int[] a = { 23, 12, 99 }; либо чуть сложнее: int[] a = new int[]{ 23, 12, 99 };

Первая форма хоть и полезна, но она более ограничена, поскольку может использоваться только в точке определения массива. Вторая форма может использоваться везде, даже внутри вызова метода.

При создании массива непримитивных объектов вы фактически создаете массив ссылок:

Integer[] a = new Integer[10];

Перед использованием такого массива эти ссылки следует инициализировать, например так:

for(int i = 0; i < a.length; i++) a[i]=rand.nextInt(500); //заполняем массив случайными числами

Здесь length – это поле, которое есть в любом массиве, которое содержит количество элементов массива. Это поле можно прочитать, но нельзя изменить.

Если в момент объявления вы не знаете, сколько элементов будет в массиве, но вам нужен уже инициализированный массив, то может выручить такая форма инициализации:

int[] а = new int[rand.nextInt(20)];


[1] Обратите внимание на то, что здесь нет точки с запятой. Это связано с тем, что в Java точка с запятой не ставится после определений функций (методов) или классов.

[2] Здесь применены два вида комментариев в Java (однострочный и многострочный).

[3] На самом деле это слишком сильное утверждение, поскольку объекты могут существовать на разных компьютерах и адресных пространствах, а также храниться на диске. В таких случаях для идентификации объекта приходится использовать не адрес памяти, а что-то другое.


Поделиться:



Последнее изменение этой страницы: 2019-06-19; Просмотров: 186; Нарушение авторского права страницы


lektsia.com 2007 - 2024 год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! (0.016 с.)
Главная | Случайная страница | Обратная связь