Upload
unguryan-vitaliy
View
47
Download
0
Embed Size (px)
Citation preview
Преобразование типов данных, логические операторы.
Виталий Унгурян [email protected]
Преобразование типов
В 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