Скачать презентацию Мультимедийный курс Программирование на Java Часть1 Лекция 2 Скачать презентацию Мультимедийный курс Программирование на Java Часть1 Лекция 2

1_Lekz_02-1_JAVA2_Прим_типы_операции_2013.ppt

  • Количество слайдов: 40

Мультимедийный курс Программирование на Java Часть1 Лекция 2. 1 1. Примитивные (простые) типы данных Мультимедийный курс Программирование на Java Часть1 Лекция 2. 1 1. Примитивные (простые) типы данных 2. Операции, комментарии 3. Управляющие конструкции

Примитивные типы данных Тип Значение Размер Константы boolean true или false 1 бит true, Примитивные типы данных Тип Значение Размер Константы boolean true или false 1 бит true, false char символ Unicode 2 байта ‘X’, u 00 ff, 88, byte целое со знаком 1 байт 50 (определяется как int, но присваивании не дает ошибки) short целое со знаком 2 байта 50 (- " -) int целое со знаком 4 байта 50 long целое со знаком 8 байтов 50 L, 50 l float число с п. т. в 4 байта формате IEEE 754 double 6. 015 Е 21, число с п. т. в 8 байтов 3445 е -05 f. D, 5780 d формате IEEE 754 50 F, 50 f, 0. 443 f, 6. 015 Е 21 F, 3445 е -05 f Размер каждого типа определен в самом языке и не зависит от2 реализации

Примитивные типы данных Логические значения • boolean не являются целыми и не могут быть Примитивные типы данных Логические значения • boolean не являются целыми и не могут быть преобразованы в числовой тип или из него • Величины типа boolean принимают значения true или false • Объявление булевских переменных: boolean a; boolean b; 3

Примитивные типы данных Встроенные примитивные целые типы byte, short, int, long и символьный тип Примитивные типы данных Встроенные примитивные целые типы byte, short, int, long и символьный тип char, в некотором смысле также являющийся целочисленным. При этом только тип char беззнаковый, все остальные – знаковые 4

Примитивные типы данных Символьный тип (char) ØТип char в Java, как и в C/C++, Примитивные типы данных Символьный тип (char) ØТип char в Java, как и в C/C++, является числовым, хотя и предназначен для хранения отдельных символов ØПеременной символьного типа можно присваивать один символ, заключенный в одинарные кавычки, либо кодирующую символ управляющую последовательность Unicode Кодировка символов Символы в Java являются 16 -разрядными символами Unicode. Первые 256 символов Unicode совместимы с кодировкой ISO 8859 -1. 5

Примитивные типы данных Escape-последовательности uxxxx – 16 -ричный код символа Unicode (xxxx); В стиле Примитивные типы данных Escape-последовательности uxxxx – 16 -ричный код символа Unicode (xxxx); В стиле С: ddd - 8 -ричный код символа (ddd) ” - двойная кавычка ’ - одинарная кавычка \ - обратный слэш t - символ табуляции n - перевод строки 6

Примитивные типы данных Escape-последовательности (продолжение) f – перевод страницы b – возврат на один Примитивные типы данных Escape-последовательности (продолжение) f – перевод страницы b – возврат на один символ (Backspace) r - возврат каретки Замечание. Escape-последовательности Unicode могут находиться в любом месте программы, а не только в строковых константах: int u 0069; // означает то же, что int i; 7

Примитивные типы данных Escape-последовательности (продолжение) Применение Escape-последовательности для инициализации полей int n = (short) Примитивные типы данных Escape-последовательности (продолжение) Применение Escape-последовательности для инициализации полей int n = (short) 'uf 000'; Преобразование символов в числа может давать отрицательные значения (в данном случае значение -4096) 8

Примитивные типы данных Escape-последовательности (продолжение) Применение Escape-последовательности для инициализации полей int n = (short) Примитивные типы данных Escape-последовательности (продолжение) Применение Escape-последовательности для инициализации полей int n = (short) 'uf 000'; Преобразование символов в числа может давать отрицательные значения (в данном случае значение -4096) 9

Примитивные типы данных Целочисленные типы byte – однобайтовое целое число (8 -битное целое со Примитивные типы данных Целочисленные типы byte – однобайтовое целое число (8 -битное целое со знаком) short – двухбайтовое целое число (16 -битное целое со знаком) int – четырехбайтовое целое число (32 -битное целое со знаком) long – восьмибайтовое целое число (64 -битное целое со знаком) 10

Примитивные типы данных Целочисленные типы ØДля задания в тексте программы численных констант типа long, Примитивные типы данных Целочисленные типы ØДля задания в тексте программы численных констант типа long, выходящих за пределы диапазона чисел типа int, после написания числа следует ставить постфикс – букву L Ø Например, 60000000 L. Можно ставить и строчную l, но ее хуже видно, особенно – на распечатках программы (можно перепутать с единицей) ØВ остальных случаях для всех целочисленных типов значение указывается в обычном виде, и оно считается имеющим тип int – но присваивании число типа int автоматически 11 преобразуется в значение типа long

Примитивные типы данных Целочисленные типы Примеры задания переменных в классе. int i, j, k; Примитивные типы данных Целочисленные типы Примеры задания переменных в классе. int i, j, k; int j 1; byte i 1=0, i 2=-5; short i 3=-15600; long m 1=1, m 2, m 3=-100; После указанных объявлений переменные i, j, k, j 1, i 1, m 2 имеют значение 0 Использование в выражениях: i=5; j=i*i + 1 m 1=jm 2=255; m 1=m 1 + m 2*2; 12

Примитивные типы данных Вещественные типы Формат - IEEE 754 (другой вариант названия IEC 60559: Примитивные типы данных Вещественные типы Формат - IEEE 754 (другой вариант названия IEC 60559: 1989) float (4 байта): ü знак - 1 бит, мантисса - 23 бита ü порядок - 8 битов (смещен на -127 т. е. нуль означает 2 в 127 -й степени) ü диапазон чисел 3. 4 E-38 ÷ 3. 4 E+38 double (8 байтов): : ü знак - 1 бит, мантисса - 52 бита ü порядок - 11 бит ü диапазон чисел 1. 7 E-308 ÷ 1. 7 E+308 13

Примитивные типы данных Вещественный тип (продолжение) Особые значения, получаемые при выполнении операций: 1) значения Примитивные типы данных Вещественный тип (продолжение) Особые значения, получаемые при выполнении операций: 1) значения бесконечности различаются как по знаку, так и по типу: Float. NEGATIVE_INFINITY, Double. NEGATIVE_INFINITY (- ∞) – Float. POSITIVE_INFINITY, Double. POSITIVE_INFINITY (+ ∞) 2) не число (Na. N – Not a Number) - - значение Na. N может получаться при преобразовании строки в число, взятии логарифма от отрицательного числа, тригонометрической функции от бесконечности и т. п не сравнимо ни с чем, даже с самим собой Float. Na. N и Double. Na. N различаются При делении на ноль целых чисел генерируется исключение Arithmetic. Exception 14

Операции Характеристики операций Приоритет - определяет порядок выполнения операций в выражении, когда нет скобок Операции Характеристики операций Приоритет - определяет порядок выполнения операций в выражении, когда нет скобок Ассоциативность – задает порядок выполнения двух рядом стоящих операций с равным приоритетом ( левая или правая выполняется раньше? ) 15

Операции Арифметические операции Приоритет 1 1 1 2 3 Оператор Ассоциативность Название операции ++ Операции Арифметические операции Приоритет 1 1 1 2 3 Оператор Ассоциативность Название операции ++ -+, *, /, % П пре- и постинкремент П пре- и постдекремент П унарные + и - Л умножение, деление, остаток от деления по модулю (применима и к целым, и к вещественным) +, +=, -=, *=, /=, %= Л сложение, вычитание специальное присваивание со сложением, вычитанием, умножением, делением , модулем 16

Операции Арифметические операции (продолжение) Ø Cпециальные операции присваивания x=10; x=x%3; альтернатива x%=3; реализуется эффективнее Операции Арифметические операции (продолжение) Ø Cпециальные операции присваивания x=10; x=x%3; альтернатива x%=3; реализуется эффективнее 17

Операции Преобразование числовых типов Неявное, если два типа совместимы (все числовые) Ø целевой тип Операции Преобразование числовых типов Неявное, если два типа совместимы (все числовые) Ø целевой тип > исходного (расширяющее преобразование) Ø при сохранении литеральной целочисленной константы в поля типа byte, short, long Ø в промежуточных выражениях (расширяющее преобразование), если § § операнды типа byte или short - до int один операнд long и другие целые – до long один операнд типа float, а другие целые - до float один операнд типа double - до double byte c = 50; c=c*2; // ошибка, т. к. результат выражения имеет тип int 18

Операции Преобразование числовых типов Явное приведение - сужающее (<целевой_тип>) <значение> byte c = 50; Операции Преобразование числовых типов Явное приведение - сужающее (<целевой_тип>) <значение> byte c = 50; c= (byte) (c*2); v. При назначении вещественного целому типу дробная часть теряется ! v. При превышении значением диапазона целевого типа оно редуцируется по модулю этого типа до остатка от деления на модуль диапазона! 19

Операции Арифметические операции (продолжение) Ø Различие между постинкриментом и преинкриментом x=15; x++; // значение Операции Арифметические операции (продолжение) Ø Различие между постинкриментом и преинкриментом x=15; x++; // значение x - 16 y=++x; // значение y - 16, x - 15 y=x++; // значение y - 15, x – 16 Ø Деление целых int c= 7/2; // дробная часть отбрасывается 20

Операции Поразрядные операции Тип операнда - целый Приоритет 2 7 8 9 4 Оператор Операции Поразрядные операции Тип операнда - целый Приоритет 2 7 8 9 4 Оператор ~ & ^ | <<, >>> &=, ^=, |=, <<=, >>>= Ассоциативность Название операции П унарное отрицание Л битовое AND Л битовое XOR Л битовое OR Л сдвиг на указанное количество разрядов влево, вправо с заполнением знак. бита нулем специальное присваивание с соответствующей операцией 21

Операции Поразрядные операции (продолжение) Метод кодирования «Дополнение до двух» Схема кодирования для отриц. чисел Операции Поразрядные операции (продолжение) Метод кодирования «Дополнение до двух» Схема кодирования для отриц. чисел 1) инвертирование всех битов 2) + двоичная 1 -42 = 42(00101010) -> 11010101 -> 11010110 Схема декодирования для отриц. чисел 1) 2) 3) 4) инвертирование всех битов преобразование в десятичную форму + 1 изменение знака 11010110 -> 41 -> 42 -> -42 22

Операции Поразрядные операции (продолжение) Пример операции «Правый сдвиг» Ø положительное int a=35; // 00100011 Операции Поразрядные операции (продолжение) Пример операции «Правый сдвиг» Ø положительное int a=35; // 00100011 a >>= 2; // 00001000 – число 8 Ø отрицательное int b=-8; // 11111000 b >>= 1; // 11111100 – число -4 При сдвиге вправо освобождающиеся разряды заполняются значением знакового бита ! При сдвиге влево освобождающиеся разряды заполняются 0! 23

Операции отношений Приоритет Оператор 5 <, <=, >, >= числовой (целый, веществ. , симв. Операции отношений Приоритет Оператор 5 <, <=, >, >= числовой (целый, веществ. , симв. ) Л == != простой Л меньше, меньше или равно, больше или равно равенство простой Л неравенство объект Л равенство ссылок объект Л неравенство ссылок 6 6 Тип операнда Ассоциативность Название операции Результат операции – значение типа boolean 24

Операции булевой логики Приоритет Оператор Ассоциативность 9 & Л булево AND 9 | Л Операции булевой логики Приоритет Оператор Ассоциативность 9 & Л булево AND 9 | Л булево OR 8 ^ Л булево исключающее ИЛИ (XOR) (по полной схеме) 10 && Л 11 || Л 1 ! П булево AND (по краткой схеме) булево OR (по краткой схеме) булево унарное отрицание &= , |=, ^=, &&= , ||= Название операции специальное присваивание с соответствующей операцией 25

Операции булевой логики (продолжение) Булевы AND и OR по краткой схеме (&&, ||) – Операции булевой логики (продолжение) Булевы AND и OR по краткой схеме (&&, ||) – не выполняется оценка правого операнда перед вычислением выражения if (d !=0 && n/d >5) … // при d=0 не будет исключения if (c ==1 & k++ < 70) d=100; // операция // инкремента гарантированно выполнится 26

Операции Цепочка присваивания a=b=c=35; Условная операция <имя_поля> = <условие> ? <выраж 1> : <выраж Операции Цепочка присваивания a=b=c=35; Условная операция <имя_поля> = <условие> ? <выраж 1> : <выраж 2>; Если условие истинно, то полю присваивается результат выражения 1, в противном случае – выражения 2. 27

Комментарии Многострочные в стиле языка С: /* Любое количество любых строк. Лишь бы там Комментарии Многострочные в стиле языка С: /* Любое количество любых строк. Лишь бы там не было сочетания звездочки и косой черты */ Однострочные в стиле языка С++: // все написанное до конца строки – комментарий Комментарии документатора : /** Многострочный комментарий, * который войдет в * программный документ */ 28

Управляющие конструкции Оператор if / else if (условие) оператор 1 ; [else оператор 2 Управляющие конструкции Оператор if / else if (условие) оператор 1 ; [else оператор 2 ; ] Пример: int i; if (i == 0) matr[i]=1; else matr[i]=-1; Условие всегда должно иметь логическое значение, поэтому if (!i) matr[i]=1; // ошибка! 29

Управляющие конструкции Оператор switch (<выражение>) { case <константа 1> : // последовательность операторов 1 Управляющие конструкции Оператор switch (<выражение>) { case <константа 1> : // последовательность операторов 1 [ break; ] case <константа 2> : // последовательность операторов 2. . . [ default: // последовательность операторов ] } Допустимые типы результата выражения: byte, short, int, char 30

Управляющие конструкции Оператор switch (продолжение) При отсутствии оператора break выполнение проходит через каждый последующий Управляющие конструкции Оператор switch (продолжение) При отсутствии оператора break выполнение проходит через каждый последующий case пока не встретится break или конец оператора 31

Управляющие конструкции Операторы цикла whilе и do / while vс предусловием (условие проверяется до Управляющие конструкции Операторы цикла whilе и do / while vс предусловием (условие проверяется до выполнения вложенного оператора ) while (условие) оператор; vс постусловием (условие проверяется после выполнения вложенного оператора ) do оператор while (условие); 32

Управляющие конструкции Примеры циклов: float sum = 0, x = 1; // Цикл с Управляющие конструкции Примеры циклов: float sum = 0, x = 1; // Цикл с предусловием while(x < 100) { sum += 1 / x; x++; } // То же, но с постусловием sum = 0; x = 1; do { sum += 1 / x; x++; while(x < 100) // Идиома бесконечного цикла while (true) { // оператор } 33

Управляющие конструкции Оператор for обычный for ([<иниц. _часть>]; [<условие>] ; [<итерац. _часть >]) оператор Управляющие конструкции Оператор for обычный for ([<иниц. _часть>]; [<условие>] ; [<итерац. _часть >]) оператор ; Управляющая переменная м. б. объявлена внутри заголовка for (с областью действия - for-оператор) for (int i=10; i>0; i--) System. out. println(i); Может быть несколько управляющих переменных цикла: for (int i=1, j=5; i>j; i++, j--) System. out. println("i="+i); System. out. println(“j="+j); 34

Управляющие конструкции Оператор for обычный (продолжение) for (; !done; ) { // отсутствуют части Управляющие конструкции Оператор for обычный (продолжение) for (; !done; ) { // отсутствуют части заголовка if (j==5) done=true; j++; } Бесконечный цикл: for ( ; ; ) { … } 35

Управляющие конструкции Оператор for итерационный (типа each) for (<тип> <перем. > : <имя_мас. / Управляющие конструкции Оператор for итерационный (типа each) for (<тип> <перем. > : <имя_мас. / имя_кол. >) оператор ; Пример: float m 1[]={23. 2 f, 3, 45}; for (float m : m 1) { System. out. print(m); System. out. print(" "); } 36

Управляющие конструкции Операторы break и continue break – прерывание цикла с переходом на оператор Управляющие конструкции Операторы break и continue break – прерывание цикла с переходом на оператор сразу за циклом continue - переход к следующей итерации цикла без завершения текущей Пример: второй десяток слагаемых в сумму не войдет. for (float x = 1; x < 100; x++ ) { if ( 10 < x && x < 21) continue; sum += 1 / x; } 37

Управляющие конструкции Операторы break и continue (продолжение) break <метка> – переход на оператор, следующий Управляющие конструкции Операторы break и continue (продолжение) break <метка> – переход на оператор, следующий сразу за помеченным блоком Пример: досрочный выход из вложенных циклов. for (int i 1 = 0; i 1 < 10; i 1++) { L: for (int i 2 = 0; i 2 < 10; i 2++) { for (int i 3 = 0; i 3 < 10; i 3++) { if (i 3 == 6) break L; } } /* Сюда передается управление после выполнения оператора "break L; " */ } 38

Управляющие конструкции Операторы break и continue (продолжение) continue <метка> – прерывает текущую итерацию цикла Управляющие конструкции Операторы break и continue (продолжение) continue <метка> – прерывает текущую итерацию цикла и продолжает помеченный цикл (только в циклах); 39

Управляющие конструкции Оператор return Обеспечивает возврат из вызываемого метода в вызывающую программу (java-систему в Управляющие конструкции Оператор return Обеспечивает возврат из вызываемого метода в вызывающую программу (java-систему в том числе) Использование допустимо только вместе с оператором if: if (i==2) return; 40