Иллюстрированный самоучитель по Java

       

Числовые классы


В каждом из шести числовых классов-оболочек есть статические методы преобразования строки символов типа

string

лредставляющей число, в соответствующий примитивный тип:

Byte.parseByte(), Double.parseDouble(), Float.parseFloat(), Integer.parselnt(), Long.parseLong(), Short.parseShort()

. Исходная строка типа

string

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

В каждом из этих классов есть статические константы

MAX_VALUE

и

MIN_VALUE

, показывающие диапазон числовых значений соответствующих примитивных типов. В классах

Double



и

Float

есть еще константы

POSITIVE_INFINITY, NEGATIVE_INFINITY, NaN

, о которых шла речь в

главе 1,

и логические методы проверки

isNan()

,

isInfinite()

.

Если вы хорошо знаете двоичное представление вещественных чисел, то можете воспользоваться статическими методами

floatTointBits()

и

doubieToLongBits()

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

intsitsToFioat()

и

longBitsToDouble()

.

Статическими методами

toBinaryString(), toHexString() и

toOctalString()

классов

integer

и

Long

можно преобразовать целые значения типов

int

и

long

, заданные как аргумент метода, в строку символов, показывающую двоичное, шестнадцатеричное или восьмеричное представление числа.

В листинге 4.1 показано применение этих методов, а рис. 4.2 демонстрирует вывод результатов.

Рис. 4.2.

Методы  числовых классов ;

Листинг 4.1.

Методы числовых классов

class NumberTest{

  public static void main(String[] args){ 

    int i = 0; 

    short sh = 0;


    double d = 0; 

    Integer kl = new Integer(55); 

    Integer k2 = new Integer(100); 

    Double dl = new Double(3.14); 

    try{

      i = Integer.parselnt(args[0]);

     sh = Short.parseShort(args[0]); 

      d = Double.parseDouble(args[1]);

     dl = new Double(args[1]);

     kl = new Integer(args[0]); 

    }catch(Exception e){} 

    double x = 1.0/0.0; 

    System.out.println("i = " + i) ; 

    System.outjprintln("sh - " + sh) ; 

    System.out.println("d. = " + d) ;

    System.out.println("kl.intValue() = " + kl.intValue()); 

    System.out.println("dl.intValue() '= "'+ dl.intValuei)); 

    System.out.println("kl > k2? " + kl.compareTo(k2)); 

    System.out.println ("x = " + x);

    System.out.println("x isNaN? " + Double.isNaN(x)); 

    System.out.println("x islnfinite? " + Double.islnfinite(x)); 

    System.out.println("x == Infinity? " +

           (x == Double.POSITIVE_INFINITY) );

    System.out.println("d = " + Double.doubleToLongBits(d)); 

    System.out.println("i = " + Integer.toBinaryString(i)); 

    System.out.println("i = " + Integer.toHexString(i)); 

    System.out.println("i = " + Integer.toOctalString(i)); 

  } 

}

Методы

parseint()

и конструкторы классов требуют обработки исключений, поэтому в листинг 4.1 вставлен блок

try{} catch(){}

. Обработку исключительных ситуаций мы разберем в главе 16.


Содержание раздела