refberry.ru

Тема 1.9 Элементарные типы данных.

Типы данных в Java платформенно-независимые. Элементарных, или простых, типов всего восемь (рис. 1.33)

Рисунок 1.33 – Элементарные типы данных

Все типы исходных данных, встроенные в язык Java, разделяются на две группы: элементарные типы (primitive types) и ссылочные типы (reference types).

Ссылочные типы разделяют на массивы (arrays), классы (classes) и интерфейсы (interfaces).

В Java имеется восемь простых типов: – byte, short, int, long, char, float, double и boolean. Их можно разделить на четыре группы:

Целые. К ним относятся типы – byte, short, int и long. Эти типы предназначены для целых чисел со знаком.

Типы с плавающей точкой – float и double. Они служат для представления чисел, имеющих дробную часть.

Символьный тип char. Этот тип предназначен для представления элементов из таблицы символов, например, букв или цифр.

Логический тип boolean. Это специальный тип, используемый для представления логических величин.

В Java, в отличие от некоторых других языков, отсутствует автоматическое приведение типов. Несовпадение типов приводит не к предупреждению при трансляции, а к сообщению об ошибке. Для каждого типа строго определены наборы допустимых значений и разрешенных операций.

Целые числа

В языке Java понятие беззнаковых чисел отсутствует. Все числовые типы этого языка – знаковые. Например, если значение переменной типа byte равно в шестнадцатиричном виде 0х80, то это – число -1.

Единственная реальная причина использования беззнаковых чисел – это использование иных, по сравнению со знаковыми числами, правил манипуляций с битами при выполнении операций сдвига. Пусть, например, требуется сдвинуть вправо битовый массив mask, хранящийся в целой переменной и избежать при этом расширения знакового разряда, заполняющего старшие биты единицами. Стандартный способ выполнения этой задачи в С – ((unsigned) mask) >> 2. В Java для этой цели введен новый оператор беззнакового сдвига вправо. Приведенная выше операция записывается с его помощью в виде mask>>>2. Детально мы обсудим все операторы далее.

Отсутствие в Java беззнаковых чисел вдвое сокращает количество целых типов. В языке имеется 4 целых типа, занимающих 1, 2, 4 и 8 байтов в памяти. Для каждого типа – byte, short, int и long, есть свои естественные области применения.

1). byte

Тип byte – это знаковый 8-битовый тип. Его диапазон – от -128 до 127. Он лучше всего подходит для хранения произвольного потока байтов, загружаемого из сети или из файла.

byte a;

byte b = 0х55;

byte c = 120;

Если речь не идет о манипуляциях с битами, использования типа byte, как правило, следует избегать. Для нормальных целых чисел, используемых в качестве счетчиков и в арифметических выражениях, гораздо лучше подходит тип int.

2). short

Short – это знаковый 16-битовый тип. Его диапазон – от -32768 до 32767. Это, вероятно, наиболее редко используемый в Java тип, поскольку он определен, как тип, в котором старший байт стоит первым.

short a;

short b = Ox55aa;

short c = 32120;

Случилось так, что на ЭВМ различных архитектур порядок байтов в слове различается, например, старший байт в двухбайтовом целом short может храниться первым, а может и последним. Первый случай имеет место в архитектурах SPARC и Power PC, второй – для микропроцессоров Intel x86. Переносимость программ Java требует, чтобы целые значения одинаково были представлены на ЭВМ разных архитектур.



3). int

Тип int служит для представления 32-битных целых чисел со знаком. Диапазон допустимых для этого типа значений – от -2147483648 до 2147483647. Чаще всего этот тип данных используется для хранения обычных целых чисел со значениями, достигающими двух миллиардов. Этот тип прекрасно подходит для использования при обработке массивов и для счетчиков. В ближайшие годы этот тип будет прекрасно соответствовать машинным словам не только 32-битовых процессоров, но и 64-битовых с поддержкой быстрой конвейеризации для выполнения 32-битного кода в режиме совместимости. Всякий раз, когда в одном выражении фигурируют переменные типов byte, short, int и целые литералы, тип всего выражения перед завершением вычислений приводится к int.

int a;

int b = 0x55aa0000;

int c=2000000000;

4). long

Тип long предназначен для представления 64-битовых чисел со знаком. Его диапазон допустимых значений достаточно велик даже для таких задач, как подсчет числа атомов во вселенной.

long a;

long b = Ох55аа000055аа0000;

Не надо отождествлять разрядность целочисленного типа с занимаемым им количеством памяти. Исполняющий код Java может использовать для ваших переменных то количество памяти, которое сочтет нужным, лишь бы только их поведение соответствовало поведению типов, заданных вами. Фактически, нынешняя реализация Java из соображений эффективности хранит переменные типа byte и short в виде 32-битовых значений, поскольку этот размер соответствует машинному слову большинства современных компьютеров (СМ – 8 бит, 8086 – 16 бит, 80386/486 – 32 бит, Pentium – 64 бит).



001502483.html

001502493.html