Основы программирования на Java - страница 9

Шрифт
Интервал

стр.

>a = 42

>b = 2

>c = 99

>d = 0

>a/b = 21

>c/d = 0

4.6. Приоритеты операторов

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

Таблица 4.7. Таблица приоритетов всех операций


Высший

1


>( ) [] •

2

~ !

3

>* / %

4

>+ -

5

>>> >>> <<

6

>> >= < <=

7

>== !=

8

&

9

^

10

|

11

&&

12

||

13

? :

14

>= op=

Низший


В первой строке таблицы приведены три необычных оператора, о которых мы пока не говорили. Круглые скобки () используются для явной установки приоритета. Квадратные скобки [] используются для индексирования переменной-массива. Оператор . (точка) используется для выделения элементов из ссылки на объект.

5. УПРАВЛЕНИЕ ВЫПОЛНЕНИЕМ ПРОГРАММЫ


Управление выполнением (flow control) позволяет изменять последовательность выполнения фрагментов программы, выбирая в зависимости от состояния данных ту или иную ветвь кода. Ветвление, циклы и вызовы подпрограмм - это разновидности управления выполнением программы. Все наши программы до сих пор были полностью линейны - операторы выполнялись строго по порядку, один за другим. В более сложных программах часто требуется, чтобы в зависимости от условий выполнялись одни операторы, а другие при этом пропускались. Для управления выполнением программного кода в Java имеется несколько возможностей, основанных на использовании условных операторов.

5.1. Условный оператор if-else

Конструкция if-else позволяет в зависимости от некоторого логического значения выполнять различные части программного кода. В обобщенной форме этот оператор записывается следующим образом:

>if (логическое выражение) оператор 1; [else оператор2;]

Раздел else необязателен. На месте любого из операторов может стоять составной оператор, заключенный в фигурные скобки. Логическое выражение это любое выражение, возвращающее значение типа boolean. Это может быть и простая переменная типа boolean.

>int bytesAvailable;

//...

>if (bytesAvailable > 0) {

>ProcessData();          //Обработка данных

>bytesAvailable  -=  n;

}

>else

>waitForMoreData();       //Ждать данные

В качестве логического выражения можно использовать выражение с операторами отношения. Это позволяет выбирать ту или иную ветвь кода в зависимости от результатов сравнения. А вот полная программа, в которой для определения, к какому времени года относится тот или иной месяц, используются операторы if-else.

>class IfElse {

>public static void main(String args[]) {

>int month = 4;

>String season;

>if (month == 12 || month == 1 || month == 2)

>{

>season = "Winter";

>}

>else if (month ==3 || month == 4 || month == 5)

>{

>season = "Spring";

>}

>else if (month == 6 || month == 7 || month == 8)

>{

>season = "Summer";

>}

>else if (month == 9 || month == 10 || month == 11)

>{

>season = "Autumn";

>}

>else

{

>season = "Bogus Month";

>}

>System.out.println( "April is in the " + season + ".");

>}

}

После выполнения программы вы должны получить следующий результат:

April is in the Spring.

5.2. Опреатор break

Оператор break сообщает исполняющей среде, что следует прекратить выполнение именованного блока и передать управление оператору, следующему за данным блоком. Для именования блоков в языке Java используются метки. Оператор break при работе с циклами и в операторах switch может использоваться без метки. В таком случае подразумевается выход из текущего блока. Для именования блока перед ним помещается метка, состоящая из идентификатора и следующего за ним двоеточия. После объявления метки на нее можно ссылаться в операторе break. При этом управление передается оператору, расположенному за поименованным блоком.


Например, в следующей программе имеется три вложенных блока, и у каждого своя уникальная метка. Оператор break, стоящий во внутреннем блоке, вызывает переход на оператор, следующий за блоком Ь. При этом пропускаются два оператора println.

>class Break {

>public static void main(String args[]) {

>boolean t = true;

>a: {

>b:    {

>c:       {

>System.out.println("ITepefl break");


стр.

Похожие книги