Content deleted Content added
Matthew0028 (talk | contribs) →Atomic wrapper classes: Fixed wikilink |
Sammi Brie (talk | contribs) Adding intentionally blank description, overriding Wikidata description "computer term referring to a Java class in object-oriented programming" |
||
(117 intermediate revisions by 86 users not shown) | |||
Line 1:
{{Short description|none}}
In [[object-oriented programming]], a '''wrapper class''' is a [[class (computer programming)|class]] that [[Encapsulation (computer programming)|encapsulates]] [[data type|types]], so that those types can be used to create [[object (computer science)|object]] [[instance (computer science)|instances]] and [[method (computer programming)|methods]] in another class that needs those types. So a '''primitive wrapper class''' is a wrapper class that encapsulates, hides or ''wraps'' data types from the eight [[primitive data type]]s,<ref>S. J. Chapman, ''Introduction to Java'', Prentice Hall, 1999.</ref> so that these can be used to create instantiated objects with methods in another class or in other classes.<ref name=murach>J. Murach, ''Murach's Java Programming'', 4th Edition, Mike Murach and Associates, Inc., 2011.</ref><ref>J. R. Hubbard, ''Programming with Java'', Schaum's Outline Series/McGraw Hill, 1998.</ref> The primitive wrapper classes are found in the [[Java API]].
The primitive wrapper classes and their corresponding primitive types are:
:{| class="wikitable"
! Primitive type !! Wrapper class !! Constructor arguments
|-
| <code>byte</code> || {{Javadoc:SE|java/lang|Byte}} || <code>byte</code> or <code>String </code>
|-
| <code>short</code> || {{Javadoc:SE|java/lang|Short}} || <code>short</code> or <code>String</code>
|-
| <code>int</code> || {{Javadoc:SE|java/lang|Integer}} || <code>int</code> or <code>String</code>
|-
| <code>long</code> || {{Javadoc:SE|java/lang|Long}} || <code>long</code> or <code>String</code>
|-
| <code>float</code> || {{Javadoc:SE|java/lang|Float}} || <code>float</code>, <code>double</code> or <code>String</code>
|-
| <code>double</code> || {{Javadoc:SE|java/lang|Double}} || <code>double</code> or <code>String</code>
|-
| <code>char</code> || {{Javadoc:SE|java/lang|Character}} || <code>char</code>
|-
| <code>boolean</code> || {{Javadoc:SE|java/lang|Boolean}} || <code>boolean</code> or <code>String</code>
|}
==The difference between wrapper classes and primitive types==
The <code>Byte</code>, <code>Short</code>, <code>Integer</code>, <code>Long</code>, <code>Float</code>, and <code>Double</code> wrapper classes are all [[subclasses]] of the {{Javadoc:SE|java/lang|Number}} class.▼
Primitive wrapper classes are not the same thing as primitive types. Whereas variables, for example, can be declared in Java as data types '''double''', '''short''', '''int''', etc., the primitive wrapper classes create instantiated objects and methods that inherit but hide the primitive data types, not like variables that are assigned the data type values.<ref name=murach/>
Therefore, the term ''Primitive wrapper class'' does not mean that wrapper classes are primitive types. It should be understood to be a class that wraps primitive types. Wrapper classes can be used to store the same value as of a primitive type variable but the instances/objects of wrapper classes themselves are ''Non-Primitive''. We cannot say that Wrapper classes themselves are Primitive types. They just wrap the primitive types.
▲The <code>Byte</code>, <code>Short</code>, <code>Integer</code>, <code>Long</code>, <code>Float</code>, and <code>Double</code> wrapper classes are all [[
The wrapper classes <code>BigDecimal</code> and <code>BigInteger</code> are not one of the primitive wrapper classes but are immutable.<ref>{{cite web
| url = http://www.javaranch.com/journal/2003/04/immutable.htm
| title = Mutable and Immutable Objects: Which classes are Immutable?
| author = David O'Meara
| date = April 2003
| publisher = Java Ranch
| accessdate = 2012-05-14
| quote = The classes java.math.BigInteger and BigDecimal are not immutable either, although maybe they should have been.
}}</ref>
<ref>{{cite web
| url = http://docs.oracle.com/javase/7/docs/api/java/math/BigInteger.html
| title = Java documentation from oracle
| author = Oracle
| quote = Immutable arbitrary-precision integers.
}}</ref>
== Atomic wrapper classes ==
With Java 5.0, additional wrapper classes were introduced in the {{Javadoc:SE|package=java.util.concurrent.atomic|java/util/concurrent/atomic}} package.
The atomic wrapper classes and their corresponding
:{| class="wikitable"
Line 49 ⟶ 68:
|}
The <code>AtomicInteger</code> and <code>AtomicLong</code> classes are subclasses of the <code>Number</code> class. The <code>AtomicReference</code> class accepts the [[TypeParameter|type parameter]] <code>V</code> that specifies the type of the object [[reference (computer science)|reference]].
== See also ==
Line 55 ⟶ 74:
* [[Java Platform, Standard Edition#java.lang|java.lang]]
* [[Java Platform, Standard Edition#java.lang.reflect|java.lang.reflect]]
* [[Java (programming language)|Java programming language]]
* [[Java syntax]]
* [[Java compiler]]
== References ==
{{Reflist}}
<!--Categories-->
[[Category:Java (programming language)]]
|