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.

 

Начало Вперед