Кен Арнольд Джеймс Гослинг

Вид материалаДокументы

Содержание


13.6. Класс Number
13.7. Класс Integer
13.8. Класс Long
13.9. Классы Float и Double
Подобный материал:
1   ...   67   68   69   70   71   72   73   74   ...   81

13.6. Класс Number


Абстрактный класс Number расширяется всеми классами-оболочками, представляющими числовые примитивные типы: Integer, Long, Float и Double. Каждый из этих классов содержит конструкторы, которые присваивают объекту либо значение соответствующего примитивного типа, либо представляющей его строки. В том случае, если строка неверна, конструктор со строковым параметром возбуждает исключение NumberFormatException.

Абстрактные методы Number возвращают значение объекта, преобразованное в один из следующих числовых типов:

public int intValue()

public int longValue()

public int floatValue()

public int doubleValue()

Каждый класс, расширяющий Number, переопределяет эти методы для преобразования своего типа в любой другой по тем же правилам, которые применяются при явном приведении типов. Например, для объекта Float со значением 32.87 метод intValue возвращает 32 — столько же, сколько дает выражение (int)32.87.

Кроме того, каждый числовой класс содержит следующие методы и константы:
  • Статический метод toString(тип), который возвращает объект String для заданного значения примитивного типа. Если строка не подходит к формату данного типа, конструктор возбуждает исключение Number FormatException.
  • Статический метод valueOf(String), который возвращает объект числового типа по строке. Все эти методы возбуждают NumberFormatException, если содержимое строки не является допустимым представлением примитивного типа.
  • Статические final-константы с именами MIN_VALUE и MAX_VALUE для минимального и максимального значения, принимаемого переменными типа.

13.7. Класс Integer


Класс Integer расширяет Number и служит для представления типа int в виде класса. Для типов short и byte классы-оболочки отсутствуют, поэтому соответствующие значения должны храниться в объектах Integer. Помимо стандартных методов класса Number, класс Integer содержит следующие методы:

public static int parseInt(String str, int radix)

throws NumberFormatException

Возвращает значение типа int, вычисленное по строке str в системе счисления с заданным основанием radix. Если преобразование с заданным основанием невозможно, возбуждается исключение NumberFormat Exception.

public static int parseInt(String str) throws NumberFormatException

Эквивалентен parse Int(str, 10).

public static Integer valueOf(String str, int radix) throws NumberFormatException

Аналогично parseInt(str, Radix), за исключением того, что вместо int возвращается объект Integer.

public static String toString(int i, int radix)

Дополнительный статический метод, который возвращает объект String, представляющий i в системе счисления с заданным основанием radix. Стандартный метод toString предполагает работу в десятичной системе счисления.

Кроме того, имеется три статических метода toHexString, toOctal String и toBinaryString, которые преобразуют аргумент типа int в шестнадцатеричную, восьмеричную или двоичную строку соответственно.

13.8. Класс Long


Класс Long расширяет Number и служит для представления типа long в виде класса. Помимо стандартных для Number методов, класс Long содержит следующие методы:

public static long parseLong(String str, int radix) throws NumberFormatException

Возвращает значение типа long, вычисленное по строке str в системе счисления с заданным основанием radix. Если строка не может быть преобразована в long с заданным основанием, возбуждается исключение NumberFormatException.

public static long parseLong(String str) throws NumberFormatException

Эквивалентен parseLong(str, 10).

public static Long valueOf(String str, int radix) throws NumberFormatException

Аналогично parseLong(str, radix), за исключением того, что вместо long возвращается объект Long.

public static String toString(long l, int radix)

Дополнительный статический метод, который возвращает объект String, представляющий l в системе счисления с заданным основанием radix. Стандартный метод toString предполагает работу в десятичной системе счисления.

По аналогии с эквивалентными методами Integer, статические методы toHexString, toOctalString и toBinaryString преобразуют аргумент типа long в шестнадцатеричную, восьмеричную или двоичную строку соответственно.

13.9. Классы Float и Double


Классы Float и Double расширяют Number и служат для представления типов float и double в виде класса. За редкими исключениями, имена методов и константы совпадают для обоих типов. Приведенный ниже список соответствует классу Float, однако float и Float всюду могут быть заменены на double и Double соответственно, что даст эквивалентные поля и методы для класса Double. Помимо стандартных методов класса Number, классы Float и Double содержат следующие методы:

public final static float POSITIVE_INFINITY

Значение для +.

public final static float NEGATIVE_INFINITY

Значение для –.

public final static float NaN

“Не-число” (“Not-a-Number”, NaN). Константа предназначена для задания значения NaN, но не для его проверки. Чтобы узнать, является ли число NaN, следует воспользоваться методом isNaN, а не сравнением с этой константой.

public static boolean isNaN(float val)

Возвращает true, если val представляет собой не-число (NaN).

public static boolean isInfinite(float val)

Возвращает true, если val представляет собой положительную или отрицательную бесконечность.

public boolean isNaN()

Возвращает true, если значение текущего объекта представляет собой не-число (NaN).

public boolean isInfinite()

Возвращает true, если значение текущего объекта представляет собой положительную или отрицательную бесконечность.

Кроме перечисленных выше методов, Float также содержит конструктор, который получает аргумент типа double. Этот аргумент используется в качестве исходного значения после его приведения к float.

Для манипуляций с битами внутри представления числа с плавающей точкой Double содержит методы для получения битовой последовательности типа long и для ее обратного приведения к типу double. Класс Float содержит эквивалентные методы для преобразования значения типа float в битовую последовательность типа int и наоборот:

public static int floatToIntBits(float value)

Возвращает битовое представление значения float в виде int.

public static float intBitsToFloat(int Bits)

Возвращает значение float, соответствующее заданному битовому представлению.

public static int doubleToLongBits(double value)

Возвращает битовое представление значения double в виде long.

public static double longBitsToDouble(long Bits)

Возвращает значение double, соответствующее заданному битовому представлению.

Упражнение 13.3

Напишите программу, которая читает файл, состоящий из элементов вида “тип значение”, где тип — название одного из классов (Boolean, Character и т. д.), а значение — строка, которую может воспринимать конструктор заданного типа. Для каждого элемента файла создайте объект нужного типа с указанным значением и добавьте его к вектору Vector. Выведите окончательный результат.