LXF85:Java
|
|
|
Содержание |
Считалочки
ЧАСТЬ 2: Мало сыграть свадьбу – надо еще научиться вести семейный бюджет, выполнять одну и ту же работу каждый день и принимать судьбоносные решения. Антон Черноусов продолжает учить монархическую чету премудростям Java.
В предыдущей статье были рассмотрены основы объектно-ориентированного языка программирования Java: инкапсуляция, наследование, полиморфизм. Мы создали простое приложение, в котором женили короля на царевне Несмеяне.
Сегодня мы поговорим о простых типах (числах), о ветвлениях, циклах, а также об исключениях.
Простые числа и их братья
Итак, мы оставили нашу царевну Несмеяну в семейном гнезде, где она в скором времени добралась до казны государства. Ей пришлось освоить нехитрую математику – отнимать и делить: ведь казна требует строго учета, и никакая программа не обходится без вычислений. Без них невозможно создать даже самую простую систему учета и контроля, а мадам необходимо наладить нетривиальный учет бюджетных средств.
Для реализации арифметических операций в Java существует семь арифметических операторов, которые работают с любыми числовыми типами: сложение +, вычитание –, умножение *, деление /, остаток %, унарный минус -val и унарный плюс +val, а также шесть примитивных типов переменных для выполнения арифметических операций:
Тип переменной | Разрядность | Описание |
---|---|---|
Byte | 8 | Целое со знаком |
Short | 16 | Целое со знаком |
Int | 32 | Целое со знаком |
Long | 64 | Целое со знаком |
Float | 32 | Число с плавающей точкой |
Double | 64 | Число с плавающей точкой |
Значение типов byte и short при выполнении вычислений переопределяется int, поэтому использование этих типов целесообразно для
хранения небольших значений для уменьшения объема используемой оперативной памяти.
int iA = 10; byte bB = 12; int iC = iA + bB; System.out.println(“Сумма А и B = “ + iC);
Выше приведен пример выполнения арифметической операции с использованием переменных различных типов. Результат – целое число типа int. Для преобразования типа переменной, например, в тип с более низкой разрядностью, необходимо воспользоваться специальными языковыми конструкциями:
double dD = 10.2; double dE = 12.23; float fF = (float) (dD + dE); System.out.println(fF);
Логика и выбор
Чтобы провести ревизию налоговой службы правильно, Несмеяне пришлось разобраться с налоговым кодексом, а там без поллитра и знаний логических операций не обойтись.
Для представления логических значений в Java присутствует простой тип boolean, который принимает значения true или false. Для проведения различных логических операций можно использовать ниже перечисленные операторы:
Тип операторов | Операторы |
---|---|
операторы отношений | < > >= <= instanceof |
операторы равенства | == != |
поразрядное И | & |
поразрядное исключающее ИЛИ | ^ |
поразрядное включающее ИЛИ | ǀ |
логическое И | && |
логическое ИЛИ | ǁ |
Пока Несмеяна разбирается в дебрях налогового кодекса, мы для иллюстрации работы с логическими выражениями обратимся к методу
primeNumberCheckUp(int numberForCheck), который выясняет, является ли переданное ему число простым.
private boolean primeNumberCheckUp(int numberForCheck) { boolean result = true; if (numberForCheck != 1 || numberForCheck != 2 || numberForCheck != 3) { for (int currentNumber = 2; currentNumber < numberForCheck; currentNumber++) { if (numberForCheck % currentNumber == 0) { result = false; } } } return result; }
В primeNumberCheckUp использованы две замечательные конструкции: оператор выбора по условию или условный оператор, и цикл.
Условный оператор if имеет следующий синтаксис:
if (логическое выражение) { операторы группы 1; } else { операторы группы 2; }
В вышеописанном методе использована упрощенная конструкция (без else), а для вычисления логического выражения использованы операторы: != (не равно) и || (логическое «или»). В полной конструкции в случае истинности логического выражения выполняются операторы группы 1, иначе – группы 2.
Вместо if для управления выполнением кода может быть использована специальная конструкция switch. В рамках этой конструкции
вычисляется целочисленное выражение, и в соответствии с полученным результатом ведется поиск соответствующего значения блока
case.
int flag = 6; switch (flag) { case 1: { System.out.println(“Царевна в спальне №1”); break; } case 5: { System.out.println(“Царевна в спальне №5”); break; } default: { System.out.println(“Кто тут знает, где царевна?”); break; } }
Обратите внимание на оператор break, который обеспечивает немедленный выход из любого блока, а в примере выше прекращает дальнейшую обработку операторов конструкции switch, а также на блок операторов default – этот блок необязательный, он выполняется в случае, если выражение, удовлетворяющие условию, не было найдено среди case.
Циклы
Разобравшись, как все устроено в королевстве, Несмеяна поняла, что все подчиняется принципу «Украл, выпил, в тюрьму» – точнее, во Дворец до следующего месяца. По кругу.
Для реализации «кругового» процесса в Java существует три вида циклов: for, while и do-while. С циклом for мы уже вы встречались в методе primeNumberCheckUp, продемонстрированном ранее, синтаксис этой конструкции следующий:
for (инициализация; логическое выражение; приращение) { операторы; }
В рамках инициализации производится объявление и установка значений временных переменных. Цикл выполняется до тех пор, пока логическое выражение истинно. На каждой итерации цикла производится приращение временных переменных.
Две другие конструкции циклов можно назвать однояйцевыми близнецами, если бы не маленькое отличие в их использовании. При
использования цикла while проверка условия осуществляется до выполнения блока операторов, а в конструкции do-while – после него, то есть действия внутри цикла отрабатывают хотя бы раз. Например, процесс одиночной попойки короля от счастья, что он женат, на языке Java можно описать так:
int i = 100; while (i > 0) { System.out.println(i + “ бутылок пива стояло на столе, одну уговорил”); i--; } System.out.println(“Все выпил, да!”); int tankard = 1; int allTankards = 10; do { System.out.println(tankard + “ стакан помыт”); tankard++; } while (tankard <= allTankards); System.out.println(“Ну вот и все стаканы помыл”);