Кроме представления обычных чисел, типы данных float и double могут представлять четыре специальных значения: положительную и отрицательную бесконечность (infinity), нуль и NaN (Not a Number). Значения бесконечности получаются, если результат вычисления с плавающей точкой превышает диапазон float или double. Нулевое значение представляет собой результат вычисления с плавающей точкой, который меньше нижней границы диапазона float или double. В типах с плавающей точкой в Java различают положительный и отрицательный нуль в зависимости от места, в котором возникло значение ниже минимального. Положительный и отрицательный нули – это разные значения, но их использование в выражениях всегда дает одинаковый результат (с точностью до знака бесконечности, если выполнялось деление на нуль). И наконец, последним специальным значением является NaN, то есть нечисловое значение. Значение NaN получается при выполнении недопустимой операции с плавающей точкой, например 0.0/0.0. Далее приводятся примеры операторов, приводящих к этим частным значениям:
double inf = 1.0/0.0; // Бесконечность
double negInf = -1,0/0.0; // Отрицательная бесконечность
double negZero = -1.0/inf; // Отрицательный нуль
double NotANumber = 0.0/0.0; // Не числовое значение
Поскольку при операциях с плавающей точкой в Java переполнение сводится к бесконечности, антипереполнение – к нулю, а также имееется особое NaN-значение, арифметические операции с плавающей точкой никогда не генерируют исключений, даже при выполнении недопустимых операций, например при делении нуля на нуль либо при вычислении корня отрицательного числа.
Примитивные типы float и double имеют соответствующие классы-обертки, которые называются Float и Double. Каждый из этих классов определяет следующие полезные константы: MIN_VALUE, MAX_VALUE, NEGATIVE_INFINITY, POSITIVE_INFINITY и NaN.
Бесконечные значения с плавающей точкой ведут себя вполне логично. Например, прибавление к бесконечности или вычитание из нее любого конечного значения дает бесконечность. Поведение отрицательного нуля почти не отличается от положительного нуля; оператор равенства == сообщает о равенстве отрицательного и положительного нуля. Единственный способ отличить отрицательный нуль от положительного или обычного нуля – разделить на него какое-либо число. 1.0/0.0 дает положительную бесконечность, а деление 1.0 на отрицательный нуль дает отрицательную бесконечность. И наконец, поскольку NaN не является числом, оператор == сообщает, что это значение не равно ни одному другому числу, включая само это значение. Чтобы проверить, являются ли значения float и double нечисловыми (NaN), следует вызывать методы Float.isNaN() и Double.isNaN().
Строки
Кроме булевых, символьных, целых типов данных и типов данных с плавающей точкой, в Java существует тип для работы со строками текста (или просто строками). Однако тип String представляет собой класс и не относится к примитивным типам языка. Тем не менее, в Java есть синтаксис для непосредственного включения строковых значений в программу, необходимый по причине широкого употребления строк. Литерал типа String состоит из произвольного текста в двойных кавычках.
"Hello, world" "'This' is a string!"
Строковые литералы могут содержать любые управляющие последовательности, которые могут представлять литералы типа char. Для включения в литерал типа String двойных кавычек нужно использовать последовательность \".
Преобразования типов
В Java возможны преобразования между целыми значениями и значениями с плавающей точкой. Кроме того, можно преобразовывать значения целых типов и типов с плавающей точкой в значения типа char и наоборот, поскольку каждый символ соответствует цифре в кодировке Unicode.Тип boolean является единственным примитивным типом в Java, который нельзя преобразовать в другой примитивный тип. Кроме того, любой другой примитивный тип нельзя преобразовать в boolean.
Существует два основных типа преобразований. Расширяющее преобразование (widening conversion) происходит, если значение одного типа преобразовывается в более широкий тип, с большим диапазоном допустимых значений. Компилятор Java обеспечивает выполнение расширяющих преобразований автоматически. Например, если значение типа int присваивается переменной типа double или значение типа char присваивается переменной типа int.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.