4 мая 2015 г.

Классы-обертки для примитивных типов

Мы уже сталкивались с классами обертками (wrapper classes) для примитивных типов, но пока не заостряли на них внимание. Сейчас же мы рассмотрим их более подробно, чтобы понять что такое методы классов и что такое поля классов.

Как вы уже знаете, в Java для хранения базовых типов данных, поддерживаемых языком, используются примитивные типы (также называемые простыми типами), такие как int или double. Примитивные типы, в отличие от объектов, используются для таких значений из соображений производительности. Применение объектов для этих значений добавляет нежелательные накладные расходы, даже в случае простейших вычислений.

Несмотря на то что примитивные типы обеспечивают выигрыш производительности, бывают случаи, когда вам может понадобиться объектное представление. Например, вы не можете передать в метод примитивный тип по ссылке. Кроме того, многие из стандартных структур данных, реализованных в Java, оперируют с объектами, что означает, что вы не можете применять эти структуры данных для сохранения примитивных типов. Чтобы справиться с такими (и подобными) ситуациями, Java предлагает обертки примитивных типов, которые представляют собой классы, помещающие примитивный тип в объект.

Обертки для примитивных типов — это Double, Float, Long, Integer, Short, Byte, Character и Boolean. Эти классы предоставляют широкий диапазон методов, позволяющий в полной мере интегрировать примитивные типы в иерархию объектных типов Java.

И далее уже рассмотрим примеры работы с методами этих классов.

W00001

По существу мы много раз использовали поле length массива args, для поучения количества его элементов. Это один из примеров работы с полями объекта класса.

Примером работы с методами класса являются строки 11 и 13.

В 11 строке мы проверяем если первый аргумент командной строки является строкой true, то тогда переменной wBoolean присваивается значение true. В ином случае оно остается равным false, как было задано при инициализации.

Пример вывода этой программы представлен ниже.

W00002

Теперь небольшой пример использования класса Character:

W00001

В данном примере использован статический метод isDigit класса Character, для определения является ли элемент массива символом или числом.

Метод isDigit возвращает true, если переданный ему как параметр тип char является числом, во всех других случаях возвращается false.

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

Класс Charaster содержит множество полезных методов и полей. Все это можно узнать из оригинальной документации.

Вывод данной программы может быть таким (зависит от аргументов командной строки):

W00002

Ну и несколько примеров с классами обертками для числовых типов:

W00003

Тут просто показано использование некоторых статических методов классов Byte и Integer, а так же использование статических полей типа MAX_VALUE.

Статический метод parseInt преобразует строку в число типа int.

Статический метод bitCount подсчитывает количество битов равных единице в переданном, как аргумент числовом типе.

Кроме этих методов и полей, у классов-оберток есть еще множество других. Поэтому, если вам понадобятся какие-либо операции над этими типами, то посмотрите сперва в стандартной библиотеке.

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

W00004

На этом я думаю с этой темой закончим. Цель была познакомиться с тем, что такое методы и поля классов. Хотя пока, может, это все ясности и не добавило, но на подкорку должно было осесть.

Далее будем рассматривать массивы и строки. Все они относятся к ссылочным типам данных Java и соответственно имеют свои поля и методы. То есть мы будем еще глубже знакомиться с тем что такое объекты и с чем их едят. И затем уже перейдем непосредственно к понятию класса.

5 комментариев:

  1. Простым языком - класс обвертки нужен для дополнительных взаимодействий с переменными создавая из них объекты. Чтобы проверить там что нить или перевести одно в другое.

    ОтветитьУдалить
    Ответы
    1. Извините, вы сами то поняли что сказали?

      Удалить
    2. все норм, только не переменньіе, а примитивьі

      Удалить
  2. Отличое обьяснение, лучше не бывает.

    ОтветитьУдалить
  3. Этот комментарий был удален автором.

    ОтветитьУдалить