您的位置:首页 > 编程语言 > Java开发

Java包装类

2016-03-31 16:49 316 查看
包装类是比较容易被人忽视的一个东西

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、它有哪些主要功能
这些类的用途主要包含两种:

作为和基本数据类型对应的类类型存在,方便涉及到对象的操作。

包含每种基本数据类型的相关属性如最大值、最小值等,以及相关的操作方法。

(其他后文提到的一些特性其实也属于这两种)

5、一般人会在什么时候注意、用到它

当需要往ArrayList,HashMap中放东西时,像int,double这种基本类型是放不进去的,因为容器都是装object的,这是就需要这些基本类型的外覆类了。Java中每种基本类型都有相应的外覆类。

面试题里考你自动拆装箱的时候

6、它的一大特点、难点:自动拆装箱
用不着先不管,暂时跳过,(好像也不难)。。
可以参考:
http://www.cnblogs.com/liuling/archive/2013/05/05/intAndInteger.html
https://www.zhihu.com/question/27194744?sort=created

7、一个诡异

没有方法可以直接改变一个Integer对象的值,只能重新初始化一个新的
这个其实是我这次研究这个东西的主要目的,后来发现真的不可以

网上直接提这个的很少,有一些评论里提到了,然后我确实在JAVA7的API里找不到接口
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: