Программирование мобильных телефонов на Java


Программирование мобильных телефонов

  • Введение
  • Глава 1. Устройство мобильных телефонов
  • Глава 2. Платформа Java 2 Micro Edition
  • Глава 3. Средства разработки мобильных приложений
  • Глава 4. Телефонные эмуляторы
  • Глава 5. Механизм работы приложений Java 2 ME
  • Глава 6. Классы пользовательского интерфейса
  • Глава 7. Программирование графики
  • Глава 8. Техника создания игр
  • Глава 9. Мобильная мультимедиа-библиотека
  • Заключение
  • Приложение 1. Основы языка Java
  • Приложение 2. Справочник по Java 2 Micro Edition

     

    Программирование на Java

  • Введение
  • Глава 1. Встроенные типы данных, операции над ними
  • Глава 2. Объектно-ориентированное программирование в Java
  • Глава 3. Пакеты и интерфейсы
  • Глава 4. Классы-оболочки
  • Глава 5. Работа со строками
  • Глава 6. Классы-коллекции
  • Глава 7. Классы-утилиты
  • Глава 8. Принципы построения графического интерфейса
  • Глава 9. Графические примитивы
  • Глава 10. Основные компоненты
  • Глава 11. Размещение компонентов
  • Глава 12. Обработка событий
  • Глава 13. Создание меню
  • Глава 14. Апплеты
  • Глава 15. Изображения и звук
  • Глава 16. Обработка исключительных ситуаций
  • Глава 17. Подпроцессы
  • Глава 18. Потоки ввода/вывода
  • Глава 19. Сетевые средства Java
  • Приложение. Развитие Java

  • 

    3fb01dc2


     

     

    ГЛАВА 4
    Классы-оболочки

    Java — полностью объектно-ориентированный язык. Это означает, что все, что только можно, в Java представлено объектами.

    Восемь примитивных типов нарушают это правило. Они оставлены в Java из-за многолетней привычки к числам и символам. Да и арифметические действия удобнее и быстрее производить с обычными числами, а не с объектами классов.

    Но и для этих типов в языке Java есть соответствующие классы — классы-оболочки (wrapper) примитивных типов. Конечно, они предназначены не для вычислений, а для действий, типичных при работе с классами — создания объектов, преобразования объектов, получения численных значений объектов в разных формах и передачи объектов в методы по ссылке.

    На рис. 4.1 показана одна из ветвей иерархии классов Java. Для каждого примитивного типа есть соответствующий класс. Числовые классы имеют общего предка — абстрактный класс Number , в котором описаны шесть методов, возвращающих числовое значение, содержащееся в классе, приведенное к соответствующему примитивному типу: bytevalue (), doubievalue () , floatValue (), intValue(), longValue (), shortValue () . Эти методы переопределены в каждом из шести числовых классов-оболочек.

    Рис. 4.1. Классы примитивных типов

    Помимо метода сравнения объектов equals о, переопределенного из класса object , все описанные в этой главе классы, кроме Boolean и class , имеют метод compareTo () , сравнивающий числовое значение, содержащееся в данном объекте, с числовым значением объекта — аргумента метода compareTo() . В результате работы метода получается целое значение:

    • 0, если значения равны;
    • отрицательное число (—1), если числовое значение в данном объекте меньше, чем в объекте-аргументе;
    • положительное число (+1), если числовое значение в данном объекте больше числового значения, содержащегося в аргументе.

    Что полезного в классах-оболочках?

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

    В каждом из шести числовых классов-оболочек есть статические методы преобразования строки символов типа 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.

     

    -
    



    Copyright © vzlom-1.ru 2020-2021