Основные синтаксические и семантические единицы языка Java. Примитивныe типы данных и основные операторы языка: Методические указания к лабораторной работе, страница 3

Целые литералы также можно выразить посредством шестнадцатеричных или восьмеричных чисел. Литерал, который начинается с 0x или 0X, считается шестнадцатеричным числом, использующим буквы от A до F (или от a до f) в качестве дополнительных символов, необходимых для записи чисел с основанием 16. Целые литералы, которые начинаются с ведущего символа 0, считаются восьмеричными числами (с основанием 8) и не могут содержать цифры 8 или 9. Java не позволяет выражать целые литералы в двоичной системе счисления (с основанием 2). Разрешенными шестнадцатеричными и восьмеричными литералами являются:

0xff   // Десятичное 255, выраженное шестнадцатеричным

0377  // То же число, выраженное восьмеричным (с основанием 8)

OxCAFEBABE // Магическое число для идентификации файлов классов Java

Целые литералы являются 32-битными значениями типа int. Если в конце целого литерала добавить символ L (или l), то такой литерал будет обозначать 64-битное значение типа long.

1234 // Целое значение

1234L // Длинное значение

OxffL // Другое длинное значение

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

byte b1 = 127, b2 = 1;    // Максимальное значение байта 127

byte sum = (byte)(b1 + b2); // Сумма будет иметь значение -128.

Ни компилятор, ни интерпретатор Java никак не предупреждают о событиях переполнения. Поэтому при использовании целочисленной арифметики важно точно знать, что диапазон используемого типа удовлетворяет поставленным целям. Целочисленное деление на ноль и взятие по модулю ноль запрещено и влечет за собой генерирование исключения ArithmeticException.

Для каждого целого типа существует соответствующий класс-обертка: Byte, Short, Integer и Long. Каждый из перечисленных классов определяет константы MINVALUE и MAXVALUE, которые описывают диапазон типа. Классы также определяют такие полезные статические методы, как Byte.parseByte() и Integer.parseInt(), служащие для преобразования строк в целые значения.

Типы с плавающей точкой

Вещественные числа в Java представлены типами данных float и double. Тип float является 32-битным значением с плавающей точкой, с обычной точностью, а double представляет 64-битное значение с плавающей точкой, с двойной точностью. Оба типа соответствуют стандарту IEEE 754-1985, который определяет формат чисел и арифметические операции, применимые к этим числам.

Значения с плавающей точкой можно непосредственно включать в Java-программу. В такой величине за необязательной последовательностью цифр следует десятичная точка и другая последовательность цифр. Вот представлены несколько примеров:

123.45 0.0 .01

Литералы с плавающей точкой можно также представить в экспоненциальной, или научной, нотации, в которой за числом следует буква e или E (показатель степени) и другое число. Второе число представляет собой степень десятки, на которую умножается первое число. Например:

1.2345E02   // 1.2345 х 102, или 123.45

1e-6             // 0.000001

6.02e23       // Число Авогадро: 6.02 х 1023

Литералы с плавающей точкой по умолчанию являются значениями типа double. При необходимости включения значения типа float за числом следует записать символ f или F:

double d = 6.02E23;

float f = 6.02e23f;

Большинство вещественных чисел, по самой их природе, нельзя точно представить каким-либо конечным количеством битов. Таким образом, значения float и double являются только приближенными значениями представляемых ими чисел. Значение типа float - это 32-битное приближение, которое дает как минимум 6 значимых десятичных разрядов, а Значение типа double – это 64-битное приближение, которое обеспечивает по крайней мере 15 значимых десятичных разрядов.