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




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)];

 



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2016-02-16 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: