博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java中的自动装箱和拆箱
阅读量:5214 次
发布时间:2019-06-14

本文共 1060 字,大约阅读时间需要 3 分钟。

一、什么是自动装箱和拆箱:

我们知道java为8种基本类型分别提供了对应的包装类型,在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行:

Integer i=new Integer(10);

  

而在从Java SE5开始就提供了自动装箱的特性,如果要生成一个数值为10的Integer对象,只需要这样就可以了:

Integer i=10;

  

这个过程会自动根据数值的类型创建Integer对象,则就是自动装箱,同理

Integer i=10;int j=i;

  

上面的代码则是自动拆箱,将Integer对象自动拆箱为int

简单来说装箱就是自动将基本数据类型转换为包装器类型,拆箱就是自动将包装器类型转化为基本类型

 

二、装箱和拆箱是如何实现的:

如下代码:

public class Main {    public static void main(String[] args) {                 Integer i = 10;        int n = i;    }}

 

反编译后得到如下结果

 

由反编译的结果可知,装箱的时候调用的是Integer的valueOf方法,拆箱时调用的是Integer的intValue方法

其他的包装器类也类似,这里就不一一举例了

总结:java装箱过程是调用包装类的valueOf方法实现的,而拆箱过程则是调用包装类的xxxValue方法实现的(xxx代表对应的基本类型)

 

三、面试中相关问题:

下面的这段代码将输出什么:

public class Main {    public static void main(String[] args) {                 Integer i1 = 100;        Integer i2 = 100;        Integer i3 = 200;        Integer i4 = 200;                 System.out.println(i1==i2);        System.out.println(i3==i4);    }}

  

有人会答true,也有人会答false

正确答案是:

truefalse
View Code

 

结果显示i1和i2指向同一个对象,i3和i4指向的是不同的对象

 

转载于:https://www.cnblogs.com/wgblog-code/p/11362544.html

你可能感兴趣的文章
Oracle Golden Gate 系列十五 -- GG Trails 说明
查看>>
Oracle 11g 新特性 -- SecureFiles 说明
查看>>
Spring Cloud Zuul 网关使用与 OAuth2.0 认证授权服务
查看>>
梳理 Opengl ES 3.0 (三)顶点坐标变换
查看>>
Office2010安装错误
查看>>
Selenium2+python自动化7-xpath定位
查看>>
算法导论笔记:02基本排序查找算法
查看>>
Redis源码解析:08对象
查看>>
AIDL--------应用之间的通信接口
查看>>
java的JVM机制
查看>>
[Python笔记]第六篇:文件处理
查看>>
阶段一:读几本经济学书
查看>>
C结构体struct 和 共用体union的使用测试
查看>>
Jquery 的ajax里边不能识别$(this)
查看>>
linux下安装python
查看>>
自 嘲
查看>>
篇一:MySQL中case when then
查看>>
全球前50大名站
查看>>
使用gradle建立java application
查看>>
.Net 转战 Android 4.4 日常笔记(5)--新软件Android Studio 0.5.8安装与配置及问题解决...
查看>>