我真的了解基本数据类型和引用类型的自动拆装箱吗?

来源:互联网 发布:java中的api文档 编辑:程序博客网 时间:2024/04/24 17:42

Java中我们熟知的四类八种数据类型为什么会有包装类?自动拆箱装箱又是怎么实现的?
以int和Integer为例首先我们要清楚基本类型和引用类型声明方式在内存中展现的不同:
声明:

        Integer int2 = new Integer(180);        int int1 = 180;

int和Integer内存展现

我们写一段代码如下:
这里写图片描述
经过编译器一手后就自动变成这样:
这里写图片描述
将int的变量转换成Integer对象,叫做装箱,反之将Integer对象转成int类型值,叫做拆箱,这个过程是在编译成class文件自动加上的,不需要程序员手工介入。
那我们为什么要使用包装类型?

首先对象是对现实世界的模拟,如果我们查询一个对象的年龄,年龄未录入,如果用int声明年龄就必须初始化,初始化为0吗?不合适,那么用Integer来声明表示null就表示未录入更符合面向对象的特征。

为泛型提供支持,泛型必须是一个对象(这点很强制)
int作为泛型就会报错

Integer可以提供更丰富的属性和API
Integer的API,比如找最大值和最小值

思考下如下代码

    public static void main(String[] args) {        Integer int2 = new Integer(180);        int int1 = 180;        System.out.println(int2.equals(int1));        System.out.println(int2 == int1);        System.out.println(new Integer(180).equals(new Integer(180)));        System.out.println(new Integer(180)==new Integer(180));    }

打印
和你想的一样吗?

原创粉丝点击