stringtranslate.com

Примитивный класс-обертка в Java

В объектно-ориентированном программировании класс -обертка — это класс , который инкапсулирует типы , так что эти типы могут использоваться для создания экземпляров объектов и методов в другом классе, которому нужны эти типы. Таким образом, примитивный класс-обертка — это класс-обертка, который инкапсулирует, скрывает или оборачивает типы данных из восьми примитивных типов данных , [1] так что их можно использовать для создания экземпляров объектов с методами в другом классе или в других классах. [2] [3] Примитивные классы-обертки находятся в Java API .

Примитивные классы-оболочки используются для создания Object, которые должны представлять примитивные типы в Collectionклассах (т. е. в Java API), в java.utilпакете и в пакете java.lang.reflect отражения . Классы коллекций — это классы, определенные Java API, которые могут хранить объекты способом, аналогичным тому, как структуры данных, такие как массивы, хранят примитивные типы данных, такие как int , double , long или char и т. д., [2], но массивы хранят примитивные типы данных, в то время как коллекции фактически хранят объекты.

Примитивные классы-оболочки и соответствующие им примитивные типы:

Разница между классами-оболочками и примитивными типами

Примитивные классы-обертки — это не то же самое, что и примитивные типы. В то время как переменные, например, могут быть объявлены в Java как типы данных double , short , int и т. д., примитивные классы-обертки создают инстанцированные объекты и методы, которые наследуют, но скрывают примитивные типы данных, в отличие от переменных, которым присваиваются значения типов данных. [2]

Таким образом, термин Primitive wrapper class не означает, что классы-обертки являются примитивными типами. Его следует понимать как класс, который оборачивает примитивные типы. Классы-обертки могут использоваться для хранения того же значения, что и у переменной примитивного типа, но сами экземпляры/объекты классов-оберток являются Non-Primitive . Мы не можем сказать, что сами классы-обертки являются примитивными типами. Они просто оборачивают примитивные типы.

Классы -оболочки Byte, Short, Integer, , Longи являются подклассами класса .FloatDoubleNumber

Классы-обертки BigDecimalи BigInteger не являются одними из примитивных классов-оберток, но являются неизменяемыми. [4] [5]

Атомарные классы-обертки

С Java 5.0 в пакет были введены дополнительные классы-обертки java.util.concurrent.atomic. Эти классы изменяемы и не могут использоваться в качестве замены обычных классов-оберток. Вместо этого они предоставляют атомарные операции для сложения, приращения и присваивания.

Атомарные классы-оболочки и соответствующие им типы:

Классы AtomicIntegerи AtomicLongявляются подклассами класса Number. AtomicReferenceКласс принимает параметр типа V , который указывает тип ссылки на объект . (См. « Generics in Java » для описания параметров типа в Java).V

Смотрите также

Ссылки

  1. ^ SJ Chapman, Введение в Java , Prentice Hall, 1999.
  2. ^ abc J. Murach, Программирование на Java от Murach , 4-е издание, Mike Murach and Associates, Inc., 2011.
  3. ^ Дж. Р. Хаббард, Программирование на Java , серия Schaum's Outline/McGraw Hill, 1998.
  4. ^ Дэвид О'Мира (апрель 2003 г.). «Изменяемые и неизменяемые объекты: какие классы являются неизменяемыми?». Java Ranch . Получено 14.05.2012 . Классы java.math.BigInteger и BigDecimal также не являются неизменяемыми, хотя, возможно, они должны были бы быть таковыми.
  5. ^ Oracle. "Java documentation from oracle". Неизменяемые целые числа произвольной точности.