Глава 3: примитивные типы и операции с ними в java
TRANSCRIPT
Глава 3. Примитивные типы данных и
операторы для работы с ними ● Булевский (логический) тип ● Целые типы, переменные, константы ● Основные операторы для работы с целочисленными
величинами ● Вещественные типы и класс Math ● Правила явного и автоматического преобразования
типа при работе с числовыми величинами ● Оболочечные классы. Упаковка (boxing) и распаковка
(unboxing) ● Приоритет операторов ● Типы-перечисления ( enum)
Курс подготовлен при поддержке Sun MicrosystemsПравила использования материалов опубликованы на www.sun.ru
Булевский (логический) тип и логические операторы
● Логические операторы: && -“И” || - “ИЛИ” ^ - “Исключающее ИЛИ” ! - “НЕ”
● Логические выражения в Java вычисляются в соответствии с укороченным оцениванием. Принимают значения true или false.
● Операторы сравнения применимы к любым величинам a и b одного типа, а также к произвольным числовым величинам a и b, не обязательно имеющим один тип: = = -“равно” != - “не равно” < - “меньше” > - “больше”
● Оператор принадлежности instanceof .
Целые типы
● byte : -128..127; байтовое целое со знаком● short : - 32768.. 32767; короткое целое● char : \u0000..\uFFFF=0.. 65535; символ
(беззнаковое 16- битное целое)● int : - 2.147483648E9.. 2.147483647E9; целое
число (32- битное целое со знаком)● long : -9.22337203685478E18..
9.22337203685478E18; длинное целое (64- битное целое со знаком)
Целые типы, переменные, константы● Для задания в тексте программы численных
литерных констант типа long, выходящих за пределы диапазона чисел типа int, после написания числа следует ставить постфикс – букву L или l.
● Константами называются именованные ячейки памяти с неизменяемым содержимым. Объявление констант осуществляется в классе, при этом перед именем типа константы ставится комбинация зарезервированных слов public и final.
Основные операторы для работы с целочисленными величинами I
● + Оператор сложения i+j● – Оператор вычитания i-j● * Оператор умножения i*j● / Оператор деления i/j● % Оператор остатка от целочисленного
деления i%j
Основные операторы для работы с целочисленными величинами II
● = Присваивание v=i● ++ Инкремент (увеличение на 1) v++● -- Декремент (уменьшения на 1) v- -● += v+=i● -= v-=i● *= v*=i● /= v/=i● %= v%=i
Вещественные типы
● float 4 байта1.5*E-45..3.4E38 “Одинарная” точность, 7-8 значащих десятичных цифр мантиссы. Тип real*4 стандарта IEEE754
● double 8 байт 5E-324..1.7E308 “Двойная” точность, 15..16 значащих цифр мантиссы. Тип real*8 стандарта IEEE754
Функции класса Math● Математические функции, а также
константы “пи” (Math.PI) и “е” (Math.E ) заданы в классе Math, находящемся в пакете java.lang .
● sin(x), cos(x), tan(x), asin(x), acos(x), atan(x), atan2(y, x), toRadians(angdeg), toDegrees(angrad)
● exp(x), expm1(x), log(x), log10(x), log1p(x), sqrt(x), cbrt(x), hypot(x,y), pow(x, y), sinh(x), cosh(x), tanh(x)
Функции класса Math
● abs(m), abs(x), signum(a), signum(x), min(m,n), min(x,y), max(m,n), max(x,y)
● ceil(x), floor(x), round(a), round(x), rint(x), ulp(a), ulp(x)
● random()● IEEEremainder(x,y)
Правила преобразования типа● Целочисленные вычисления проводятся на аппаратном
уровне только с величинами типа int или long. Величины типа byte, short или char сначала преобразуются в int, после чего производится их подстановка в качестве операндов. Если один из операндов типа long, другой целочисленный операнд автоматически преобразуется к этому типу, и действия производятся с числами типа long.
● Если один из операндов типа double, а другой float, значение float автоматически преобразуется к типу double, и действия производятся с числами типа double.
● Если один из операндов целочисленный, а другой вещественный, сначала идёт преобразование целочисленного операнда к такому же вещественному типу, а потом выполняется оператор.
Оболочечные классы● Каждому примитивному типу сопоставляется оболочечный класс. В
общем случае они имеют те же имена, что и примитивные типы, но начинающиеся не со строчной, а с заглавной буквы. Исключение составляют типы int и char, для которых имена оболочечных классов Integer и Character.
● Основное назначение оболочечных классов – создание объектов, являющихся оболочками над значениями примитивных типов. Процесс создание такого объекта (“коробки” - box) из значения примитивного типа называется упаковкой (boxing), а обратное преобразование из объекта в величину примитивного типа – распаковкой (unboxing). Упаковка и распаковка для числовых классов осуществляется автоматически.
● Константы и методы : Integer.MIN_VALUE, Integer.MAX_VALUE, Float.MIN_VALUE , Float.MAX_VALUE, Double.MIN_VALUE , Double.MAX_VALUE, Integer.parseInt(строка), Long.parseLong(строка), Float.parseFloat(строка), Double.parseDouble(строка) и т.п.
Приоритет операторов● В Java имеется 15 уровней приоритета
операторов. В хорошо написанной программе ставятся скобки, повышающие читаемость программы, даже если они не нужны с точки зрения таблицы приоритетов.
● 1высший Постфиксные; 2 Унарные; 3 Создания объектов и преобразования типа; 4 Мультипликатив-ные; 5 Аддитивные; 6 Сдвиги битов; 7 Отношения; 8 Эквивалентности; 9 Побитовое И; 10 Побитовое исключающее ИЛИ; 11Побитовое ИЛИ; 12 Логическое И; 13Логическое ИЛИ; 14 Условный; 15низший Присваивания
Перечисления● Иногда требуется использовать элементы, которые не
являются ни числами, ни строками, но ведут себя как имена элементов и одновременно обладают порядковыми номерами. Например, названия месяцев или дней недели. В этих случаях используют перечисления.
● Пример задания типа: enum Spring { march, apr, may };● Доступ к элементу перечисления осуществляется с
квалификацией именем типа-перечисления: ИмяТипа.имяЭлемента . Пример: Spring.March
● Задание переменных: Spring spr1=Spring.apr, spr2;