Программирование на языке Java. Примитивные типы данных. Операции, комментарии. (Лекция 2.1)

Содержание

Слайд 2

Размер каждого типа определен в самом языке и не зависит от реализации Примитивные типы данных


Размер каждого типа определен в самом языке и не зависит от

реализации

Примитивные типы данных

Слайд 3

Логические значения boolean не являются целыми и не могут быть преобразованы

Логические значения
boolean не являются целыми и не могут быть преобразованы

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

Примитивные типы данных

Слайд 4

Встроенные примитивные целые типы byte, short, int, long и символьный тип


Встроенные примитивные целые типы byte, short, int, long и символьный тип

char, в некотором смысле также являющийся целочисленным. При этом только тип char беззнаковый, все остальные – знаковые

Примитивные типы данных

Слайд 5

Символьный тип (char) Тип char в Java, как и в C/C++,

Символьный тип (char)
Тип char в Java, как и в C/C++, является

числовым, хотя и предназначен для хранения отдельных символов
Переменной символьного типа можно присваивать один символ, заключенный в одинарные кавычки, либо кодирующую символ управляющую последовательность Unicode
Кодировка символов
Символы в Java являются 16-разрядными символами Unicode. Первые 256 символов Unicode совместимы с кодировкой ISO8859-1.

Примитивные типы данных

Слайд 6

Escape-последовательности \uxxxx –16-ричный код символа Unicode (xxxx); В стиле С: \ddd

Escape-последовательности
\uxxxx –16-ричный код символа Unicode (xxxx);
В стиле С:
\ddd -

8-ричный код символа (ddd)
\” - двойная кавычка
\’ - одинарная кавычка кавычка
\\ - обратный слэш
\t - символ табуляции
\n - перевод строки

Примитивные типы данных

Слайд 7

Escape-последовательности (продолжение) \f – перевод страницы \b – возврат на один

Escape-последовательности (продолжение)
\f – перевод страницы
\b – возврат на один символ (Backspace)
\r

- возврат каретки
Замечание. Escape-последовательности Unicode могут находиться в любом месте программы, а не только в строковых константах:
int \u0069; // означает то же, что int i;

Примитивные типы данных

Слайд 8

Escape-последовательности (продолжение) Применение Escape-последовательности для инициализации полей int n = (short)

Escape-последовательности (продолжение)
Применение Escape-последовательности для инициализации полей
int n = (short) '\uf000';
Преобразование

символов в числа может давать отрицательные значения (в данном случае значение -4096)

Примитивные типы данных

Слайд 9

Escape-последовательности (продолжение) Применение Escape-последовательности для инициализации полей int n = (short)

Escape-последовательности (продолжение)
Применение Escape-последовательности для инициализации полей
int n = (short) '\uf000';
Преобразование

символов в числа может давать отрицательные значения (в данном случае значение -4096)

Примитивные типы данных

Слайд 10

Целочисленные типы byte – однобайтовое целое число (8-битное целое со знаком)

Целочисленные типы
byte – однобайтовое целое число (8-битное целое со

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

Примитивные типы данных

Слайд 11

Целочисленные типы Для задания в тексте программы численных констант типа long,

Целочисленные типы
Для задания в тексте программы численных констант типа long,

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

Примитивные типы данных

Слайд 12

Целочисленные типы Примеры задания переменных в классе. int i,j,k; int j1;byte

Целочисленные типы
Примеры задания переменных в классе.
int i,j,k;
int j1;byte i1=0,i2=-5;short i3=-15600;

long m1=1,m2,m3=-100;
После указанных объявлений переменные i,j,k,j1,i1,m2 имеют значение 0
Использование в выражениях:
i=5;j=i*i + 1
m1=jm2=255;
m1=m1 + m2*2;

Примитивные типы данных

Слайд 13

Вещественные типы Формат - IEEE 754 (другой вариант названия IEC 60559:1989)

Вещественные типы
Формат - IEEE 754 (другой вариант названия IEC 60559:1989)
float

(4 байта):
знак - 1 бит, мантисса - 23 бита
порядок - 8 битов (смещен на -127 т.е. нуль означает 2 в -127-й степени)
диапазон чисел 3.4E-38 ÷ 3.4E+38
double (8 байтов): :
знак - 1 бит, мантисса - 52 бита
порядок - 11 бит
диапазон чисел 1.7E-308 ÷ 1.7E+308

Примитивные типы данных

Слайд 14

Вещественный тип (продолжение) Особые значения, получаемые при выполнении операций: 1) значения

Вещественный тип (продолжение)
Особые значения, получаемые при выполнении операций:
1) значения бесконечности различаются

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

Примитивные типы данных

Слайд 15

Характеристики операций Приоритет - определяет порядок выполнения операций в выражении, когда

Характеристики операций
Приоритет - определяет порядок выполнения операций в выражении, когда нет

скобок
Ассоциативность – задает порядок выполнения двух рядом стоящих операций с равным приоритетом ( левая или правая выполняется раньше?)

Операции

Слайд 16

Операции Арифметические операции

Операции

Арифметические операции

Слайд 17

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

Операции

Арифметические операции (продолжение)

Cпециальные операции присваивания
x=10;
x=x%3;
x%=3;

альтернатива

реализуется эффективнее

Слайд 18

Операции Преобразование числовых типов Неявное, если два типа совместимы (все числовые)

Операции

Преобразование числовых типов

Неявное, если два типа совместимы (все числовые)
целевой тип >

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

Операции Преобразование числовых типов Явное приведение - сужающее ( ) byte

Операции

Преобразование числовых типов
Явное приведение - сужающее
(<целевой_тип>) <значение>
byte c =

50;
c= (byte) (c*2);

При назначении вещественного целому типу дробная часть теряется !
При превышении значением диапазона целевого типа оно редуцируется по модулю этого типа до остатка от деления на модуль диапазона!

Слайд 20

Операции Арифметические операции (продолжение) Различие между постинкриментом и преинкриментом x=15; x++;

Операции

Арифметические операции (продолжение)

Различие между постинкриментом и преинкриментом
x=15;
x++; // значение

x - 16
y=++x; // значение y - 16, x - 15
y=x++; // значение y - 15, x – 16
Деление целых
int c= 7/2; // дробная часть отбрасывается
Слайд 21

Операции Поразрядные операции Тип операнда - целый

Операции

Поразрядные операции
Тип операнда - целый

Слайд 22

Операции Поразрядные операции (продолжение) Метод кодирования «Дополнение до двух» Схема кодирования

Операции

Поразрядные операции (продолжение)

Метод кодирования «Дополнение до двух»
Схема кодирования для отриц. чисел
инвертирование

всех битов
+ двоичная 1
-42 = 42(00101010) -> 11010101 -> 11010110
Схема декодирования для отриц. чисел
инвертирование всех битов
преобразование в десятичную форму
+ 1
изменение знака
11010110 -> 41 -> 42 -> -42
Слайд 23

Операции Поразрядные операции (продолжение) Пример операции «Правый сдвиг» положительное int a=35;

Операции

Поразрядные операции (продолжение)

Пример операции «Правый сдвиг»
положительное
int a=35; // 00100011
a

>>= 2; // 00001000 – число 8
отрицательное
int b=-8; // 11111000
b >>= 1; // 11111100 – число -4
При сдвиге вправо освобождающиеся разряды заполняются значением знакового бита !
При сдвиге влево освобождающиеся разряды заполняются 0!
Слайд 24

Операции Операции отношений Результат операции – значение типа boolean

Операции

Операции отношений

Результат операции – значение типа boolean

Слайд 25

Операции Операции булевой логики

Операции

Операции булевой логики

Слайд 26

Операции Операции булевой логики (продолжение) Булевы AND и OR по краткой

Операции

Операции булевой логики (продолжение)

Булевы AND и OR по краткой схеме (&&,||)

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

Операции Цепочка присваивания a=b=c=35; Условная операция = ? : ; Если

Операции

Цепочка присваивания
a=b=c=35;
Условная операция
<имя_поля> = <условие> ? <выраж1> : <выраж2>;

Если условие истинно, то полю присваивается результат выражения 1, в противном случае – выражения 2.