- •§1. Лексика языка
- •§2. Типы данных
- •§3. Ссылочный тип
- •3.1. Понятие ссылочного типа данных
- •§4. Класс String
- •§6. Массивы
- •§7. Коллекции, списки, итераторы
- •Пробелы
- •Комментарии
- •Лексемы
- •§8. Поток управления
- •.1. Кодировка
- •Понятие ссылочного типа данных
- •3.2. Преобразование ссылочных типов (расширение и сужение)
- •§4. Класс String
- •§6. Массивы
- •8.1. Условные операторы
- •8.2. Неопределенные циклы
- •8.3. Определенные циклы
- •Многовариантное ветвление – оператор switch
- •Прерывание потока управления
- •Ветвления
8.1. Условные операторы
Условный оператор в языке Java имеет вид:
if (условие) оператор // или if (условие) { оператор1; оператор2; } |
Все операторы, заключенные в фигурные скобки, будут выполнены, если значение условия истинно. Общий случай условного оператора выглядит так:
8.2. Неопределенные циклы
Существует два вида повторяющихся циклов, которые лучше всего подходят, если вы точно не знаете, сколько повторений должно быть выполнено. Первый из них, цикл while, выполняет тело цикла, только пока выполняется его условие.
while (условие) {операторы;} |
Условие цикла while проверяется в самом начале. Следовательно, возможна ситуация, когда код, содержащийся в блоке, не будет выполнен ни разу. Если необходимо, чтобы блок выполнялся хотя бы один раз, проверку условия нужно перенести в конец. Это можно сделать с помощью цикла do/while.
do оператор while (условие); |
8.3. Определенные циклы
Цикл for – распространенная конструкция для выполнения повторений, количество которых контролируется счетчиком, обновляемым на каждой итерации.
for (int i = 1; i < = 10; i++){ System.out.println(i); } |
Первый элемент оператора for обычно выполняет инициализацию счетчика, второй формулирует условие выполнения тела цикла, а третий определяет способ обновления счетчика.
for (int i = 10; i > 0; - i){ System.out.println(“Обратный отсчет …” + i); |
Многовариантное ветвление – оператор switch
Конструкция if/else может оказаться неудобной, если необходимо сделать выбор из многих вариантов. Например, создавая систему меню из трех альтернатив, можно использовать следующий код.
String input = JOptionPane.showInputDialog (“Выберите вариант (1, 2, 3)”); int choice = Integer.parseInt (input); switch (choice){ case 1: … break; case 2: … break; case 3: … break; default: // неверный выбор … break; } |
Выполнение начинается с метки case, соответствующей значению переменной choice, и продолжается до следующего оператора break или конца оператора switch. Если ни одна метка не совпадает со значением переменной, выполняется раздел default. Метка case должна быть целочисленной!
Пример 3. Игра FizzBazz [4] с применением оператора switch.
Прерывание потока управления
Для выхода из цикла можно применять тот же оператор, что использовался для выхода из тела оператора switch.
while (balance <=100){ balance += payments; if (balance != goal) break; // выход из цикла } |
Существует также оператор continue, который, подобно break, прерывает нормальное выполнение программы. Оператор continue передает управление в начало текущего вложенного цикла. Например:
Scanner in = new Scanner (System.in); /* связали переменную in с консольным вводом */ while (sum < goal){ System.out.println(“Введите число: ”); /* считали с клавиатуры целое число n */ n = in.nextInt(); if(n < 0) continue; sum+=n; /* не выполняется суммирование, если n < 0 */ |
Логические операции
&& - логическое и
|| - логическое или
! - логическое отрицание
^ - XOR
Как работают данные операции, мы уже рассматривали. Стоит отметить, что операции "&&" и "||" считаются достаточно хитро. Например, если первое значение в операции "&&" ложно, то второе значение не проверяется, в операции "или" наоборот, если первое значение истинно, то второе не проверяется. Операция XOR - это логическое сложение по модулю два, также данную операцию называют исключающее или, очевидно, что оно истинно когда оба аргумента различны.
Математические операции
+ - сложение
- - вычитание
* - умножение
/ - деление
% - остаток от деления
Все эти операции уже знакомы вам из математики. Никаких неожиданностей от них ждать не приходиться, только стоит помнить, что если вы делите два целых числа, то вы получите результат целочисленного деление, т.е 29 / 7 = 4, а 29 % 7 = 1, но если один из аргументов вещественное число, то вы получите обычное деление, а применение операции остатка будет не возможно: 10 / 4.0 = 2.5
Операции сравнения
> - больше
>= - больше или равно
< - меньше
<= - меньше или равно
== - равно
!= - неравно
Результатом данных операций является true или false. Операции сравнения применимы не только к численным наборам данным, но и ко многим другим, у которых определен некоторый порядок следования друг за другом. Например, строки можно сравнивать в лексикографическом смысле, т.е по тому, как идут буквы в алфавите: а < б или ба < бб.
Операции сдвига
>> - правый сдвиг
<< - левый сдвиг
>>> - сдвиг вправо без учета знака
Новичку данные операции скорее всего не понадобятся, но вам следует знать, что такие операции существуют. Правый сдвиг осуществляет сдвиг побитового представления объекта вправо на какое - то целое число. Левый сдвиг осуществляет тоже самое, но влево. А сдвиг вправо без учета знака не сдвигает знак, так как знак обычно кодируется первым битом числа. Рассмотрим некоторые примеры:
Такие результаты на самом деле достаточно просто объяснить, дело в том, что целые числа представлены в памяти компьютера как 32 бита, которые принимают значения 0 или 1, но так как числа записывается, как и в любой системе счисления слева направо, где первый бит означает знак числа, то все становится понятно.
Битовые операции
& - побитовое и
| - побитовое или
^ - XOR
~ - побитовое дополнение
Данные операции работают с побитовым представлением объекта, и соответствуют операциям из алгебры логики.
Циклы — это повторение операций до тех пор, пока верно некое логическое условие. Например, зададим условием цикла, что некая переменная а меньше 10.
Цикл будет выполняться до тех пор (т.е. заключенные в него операторы будут выполняться столько раз), пока это условие не станет верным.
Имеется три вида циклов: for, do...while, while. Рассмотрим, например, конструкцию цикла for.
