29
Преобразование типов данных, логические операторы. Виталий Унгурян [email protected]

Логические операторы, операторы ветвлений

Embed Size (px)

Citation preview

Page 1: Логические операторы, операторы ветвлений

Преобразование типов данных, логические операторы.

Виталий Унгурян [email protected]

Page 2: Логические операторы, операторы ветвлений

Преобразование типов

В java различают явное и неявное

преобразование типов данных.

Page 3: Логические операторы, операторы ветвлений

Преобразование типов

Неявное преобразование типов данных выполняет компилятор, а явное преобразование данных

выполняет сам программист.

Page 4: Логические операторы, операторы ветвлений

Неявное преобразование

Неявное преобразование – это автоматическое

расширение (widening) или повышение

(promotion) типа.

См. Task01.java

Page 5: Логические операторы, операторы ветвлений

Неявное преобразование типов

Неявное преобразование типов выполняется в случае если выполняются условия:

• Оба типа совместимы;• Длина целевого типа больше или

равна длине исходного типа.

См. Task01.java

Page 6: Логические операторы, операторы ветвлений

Таблица неявного преобразования типов

Сплошные линии обозначают преобразования, выполняемые без потери данных. Штриховые линии говорят о том, что при преобразовании может произойти потеря точности.

Page 7: Логические операторы, операторы ветвлений

Преобразование типов

Явное преобразование сужение (narrowing) , сжатие типа

int b = 3;short a = (short) b;

См. Task02.java

Page 8: Логические операторы, операторы ветвлений

Правила явного преобразования

Типы всех значений byte, short, char повышаются до типа int, если один из операндов int

Если один операнд имеет тип long, то тип всего выражения повышается до long.

Если один операнд имеет тип float, то тип всего выражения повышается до float.

Если один операнд имеет тип double, то тип всего выражения повышается до double.

Page 9: Логические операторы, операторы ветвлений

Таблица преобразований

Буква Y означает расширяющее преобразование, которое выполняется автоматически. Буква С означает сужающее преобразование, требующее явного приведения. Наконец, Y* означает автоматическое расширяющее преобразование, в процессе которого значение может потерять некоторые из наименее значимых разрядов.

Page 10: Логические операторы, операторы ветвлений

Ошибки сжатия типов

byte b = 50;b = b * 2; Type mismatch: cannot convert from int to byte Исправленный текст :byte b = 50; b = (byte) (b * 2);

boolean b = true; int a = (int) b;

Page 11: Логические операторы, операторы ветвлений

Ошибки сжатия типов

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

Page 12: Логические операторы, операторы ветвлений

Оператор ветвления if

Оператор if позволяет вашей программе в зависимости от условий выполнить оператор или группу операторов, основываясь на значении булевой переменной или выражения.

Page 13: Логические операторы, операторы ветвлений

Блок схема if

Page 14: Логические операторы, операторы ветвлений

Оператор if

Оператор if является основным оператором выбора в Java и позволяет выборочно изменять ход выполнения программы - и это одно из основных отличий между программированием и простым вычислением.if (условие) оператор; // если условие истинно, то выполняется оператор

См. Task3

Page 15: Логические операторы, операторы ветвлений

Оператор if

См. Task3

Page 16: Логические операторы, операторы ветвлений

Ключевое слово else

if (условие) оператор; // если условие истинно, то выполняется первый оператор else оператор; // если условие ложно, то выполняется оператор после else.if (условие) { оператор1; оператор2; } else { оператор1; оператор2; }

См. Task4

Page 17: Логические операторы, операторы ветвлений

Ключевое слово else

См. Task4

Page 18: Логические операторы, операторы ветвлений

Ввод числа с клавиатуры

// создаём объект класса ScannerScanner sc = new Scanner(System.in); int i = 2;System.out.print("Введите целое число: ");// считывает целое число с потока ввода // и сохраняем в переменнуюi = sc.nextInt(); // Выводим значение переменнойSystem.out.println(i);

См. Task5

Page 19: Логические операторы, операторы ветвлений

Цепочка операторов if-else-if

if (condition) statement;else if (condition) statement; else if (condition) statement; . . . else statement;

Условные выражения оцениваются сверху вниз. Как только найдено условие, принимающее значение true, выполняется ассоциированный с этим условием оператор, а остальная часть цепочки пропускается. Если ни одно из условий не принимает значение true, то выполняется последний оператор else, который можно рассматривать как оператор по умолчанию.

См. Task6

Page 20: Логические операторы, операторы ветвлений

Составной оператор

if (age > 18) buyCount++; System.out.print("Продано");

if (age > 18) {   buyCount++;  System.out.print("Продано");}Операторы, заключенные в фигурные скобки, считаются за одну операцию, и называются составным оператором.

Page 21: Логические операторы, операторы ветвлений

Тернарный оператор

Общая форма оператора if-then-else такова:Выражение1 ? Выражение2 : выражениеЗ;

Page 22: Логические операторы, операторы ветвлений

Тернарный оператор

int e = (b == 0) ? 0 : (a / b); В качестве первого операнда — может быть использовано любое выражение, результатом которого является значение типа boolean. Если результат равен true, то вычисляется выражение, заданное вторым операндом. Если же первый операнд равен false, то вычисляется выражение третьего операнда. Второй и третий операнды, то есть «выражение2» и «выражение З», должны возвращать значения одного типа и не должны иметь тип void. 

Page 23: Логические операторы, операторы ветвлений

Оператор множественного выбора switch

В отличие от операторов if-else, оператор switch (переключатель) применим к известному числу возможных ситуаций. Можно использовать простые типы byte, short, char, int. Также можно использовать Enum и String (начиная с JDK7), а также объекты классов-оберток, Character, Byte, Short, Integer.

Page 24: Логические операторы, операторы ветвлений
Page 25: Логические операторы, операторы ветвлений

Оператор switch

switch (ВыражениеДляСравнения) { case Совпадение1: команда; case Совпадение2: команда; case Совпадение3: команда; default: оператор; }

Page 26: Логические операторы, операторы ветвлений

Оператор switch

Каждая секция case обычно заканчивается командой break, которая передаёт управление к концу команды switch.   Если не использовать break выполнение кода продолжится.Дублирование значений case не допускается. Тип каждого значения должен быть совместим с типом выражения для поиска совпадений.

Page 27: Логические операторы, операторы ветвлений

Оператор switch

Page 28: Логические операторы, операторы ветвлений

Оператор switch

Page 29: Логические операторы, операторы ветвлений

Оператор switch