Java包装类

包装类是比较容易被人忽视的一个东西
 
1、JAVA为什么会有这个东西
Java语言是一个面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,在设计类时为每个基本数据类型设计了一个对应的类进行代表,这样八个和基本数据类型对应的类统称为包装类(Wrapper Class),有些地方也翻译为外覆类或数据类型类。
 
2、它是啥
包装类均位于java.lang包,包装类和基本数据类型的对应关系如下表所示:
基本类型 包装类
boolean  Boolean
char       Character
byte       Byte
short      Short
int          Integer
long       Long
float       Float
double   Double
在这八个类名中,除了Integer和Character类以后,其它六个类的类名和基本数据类型一直,只是类名的第一个字母大写即可。
 
3、区别:
基本类型一般都是把值放在栈空间的,而包装类是栈空间放地址,值放在这个地址指向的堆空间:
int i = 5;//直接在栈中分配空间
Integer i = new Integr(5);//对象是在堆内存中,而i(引用变量)是在栈内存中
 
比如: Integer 的默认值是 null,int的默认值0 
 
4、它有哪些主要功能
这些类的用途主要包含两种:
  1. 作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。
  2. 包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。
  3. (其他后文提到的一些特性其实也属于这两种)
 
5、一般人会在什么时候注意、用到它
  1. 当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的外覆类了。Java中每种基本类型都有相应的外覆类。
  2. 面试题里考你自动拆装箱的时候
 
6、它的一大特点、难点:自动拆装箱
用不着先不管,暂时跳过,(好像也不难)。。
可以参考:
 
7、一个诡异
  1. 没有方法可以直接改变一个Integer对象的值,只能重新初始化一个新的
    1. 这个其实是我这次研究这个东西的主要目的,后来发现真的不可以
    2. 网上直接提这个的很少,有一些评论里提到了,然后我确实在JAVA7的API里找不到接口
原文地址:https://www.cnblogs.com/bellkosmos/p/5341739.html