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

Post on 10-Apr-2017

58 Views

Category:

Education

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

Виталий Унгурян unguryan@itstep.org

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

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

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

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

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

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

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

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

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

(promotion) типа.

См. Task01.java

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

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

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

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

См. Task01.java

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

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

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

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

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

См. Task02.java

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

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

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

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

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

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

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

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

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;

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

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

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

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

Блок схема if

Оператор if

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

См. Task3

Оператор if

См. Task3

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

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

См. Task4

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

См. Task4

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

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

См. Task5

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

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

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

См. Task6

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

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

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

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

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

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

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

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

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

Оператор switch

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

Оператор switch

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

Оператор switch

Оператор switch

Оператор switch

top related