千家信息网

如何进行Java中自动装箱和自动拆箱原理剖析

发表于:2025-12-03 作者:千家信息网编辑
千家信息网最后更新 2025年12月03日,如何进行Java中自动装箱和自动拆箱原理剖析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。Java中数据类型可以划分为两
千家信息网最后更新 2025年12月03日如何进行Java中自动装箱和自动拆箱原理剖析

如何进行Java中自动装箱和自动拆箱原理剖析,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

Java中数据类型可以划分为两种,一种是Primitive Type(基本类型),另外一种是Reference Type(引用类型)。基本类型的数值不是Object对象,不能调用对象的toString()、getClass()等方法。Java提供了针对每种基本类型的包装类型,如下图所示:

Java 基本数据(Primitive)类型的自动装箱(autoboxing)、拆箱(autounboxing)是自J2SE 5.0开始提供的功能。Java语言规范中提到在很多情况下自动装箱和自动拆箱是由编译器自行完成的。该情况下包装成为装箱,解包装称为拆箱。

自动装箱 Java 八种基本数据类型在某些条件下使用会自动变为对应的包装器类型,举例 Integer(int)类型如下:

@Test

public void boxing(){

Integer i1 = 10;

Integer i2 = 10;

Integer i3 = 128;

Integer i4 = 128;

System.out.println("i1==i2: " + (i1 == i2));

System.out.println("i3==i4: " + (i3 == i4));

System.out.println("i1.equals(i2): " + i1.equals(i2));

System.out.println("i3.equals(i4): " + i3.equals(i4));

}

输出结果如图:

1.当包装器类型进行"=="比较时,i3会调用 Integer.valueOf() 自动装箱基本数据类型为包装器类型,源码如下:

Integer 对象自动缓存int值范围在low~high(-128~127),如果超出这个范围则会自动装箱为包装类。

2.Integer包装类实现 equals 方法中,只要比较的当前对象是 Integer 实例就会自动拆箱为基本数据类型。Integer类的equals方法的源码如下:

而其他类型实现如下:

1)Integer、Short、Byte、Character、Long这几个包装类 valueOf() 或者 intValue() 方法实现类似

2)Double、Float的 valueOf() 或者 intValue() 方法的实现类似

3)Boolean的 valueOf() 或者 intValue() 方法实现是个三目运算,如 return (b ? TRUE : FALSE);

自动拆箱 Java 八种包装器类型在某些条件下使用会自动变为对应的基本数据类型,举例 int(Integer)类型如下:

@Test

public void boxing(){

Integer i1 = 10;

int i2 = 10;

int i3 = 128;

Integer i4 = 128;

System.out.println("i1==i2: " + (i1 == i2));

System.out.println("i3==i4: " + (i3 == i4));

}

输出结果如图:

程序执行时i4会调用 Integer.intValue() 方法自动拆箱包装器类型为基本数据类型,源码如下:

包装器类型和基本数据类型进行"=="比较时,包装器类型会自动拆箱为基本数据类型。

源码参考:http://blog.yoodb.com/yoodb/article/detail/1085,微信"引用"功能,会导致java编码格式问题,建议手动敲写代码或者源码参考此路径。

注意:equals() 比较的是两个对象的值(内容)是否相同,而 "==" 比较的是两个对象的引用(内存地址)是否相同,也用来比较两个基本数据类型(int)的变量值是否相等。"=="运算符的两个操作数都是包装器类型的引用时比较指向的是否是同一个对象,而其中有一个操作数是表达式(即包含算术运算)则比较的是数值(即会触发自动拆箱的过程),对于包装器类型 equals 方法并不会进行类型转换。

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注行业资讯频道,感谢您对的支持。

类型 包装 数据 方法 装箱 对象 源码 两个 运算 相同 内容 功能 情况 操作数 数值 条件 结果 范围 如图 参考 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 易语言怎么数据库不断线 我国持续加强网络安全总体布局 个人软件开发创业项目 网络安全信息周 马鞍山设备维护管理软件开发平台 黄冈好的软件开发中心 南京研究所软件开发工作好吗 北邮计算机和网络安全哪个好 农村网络安全宣传周活动 第一章数据库测试 外文期刊数据库检索官网 软件开发公司如何接项目 泾县自动化软件开发服务厂家供应 网络安全检查结果总结报告 一个视频讲解网络安全 小学生做好网络安全 数据库插入数据过程中建表 保定华酷网络技术 软件开发价值主张怎么写 陕师大中国近现代史的数据库 工业网络技术用电脑么 英语介绍网络技术专业 马鞍山设备维护管理软件开发平台 服务器搭建打不开 网络技术实验室实验报告 axpro3代理服务器 校园网络安全心得体会500字 创建空间数据库插入点线和面 服务器 辐射 233网校网络技术百度云
0