Java进阶之自动拆箱与自动装箱

本文介绍了Java中的自动拆箱与自动装箱,包括它们的定义、原因、使用方法和源码分析。自动装箱是将基本类型转换为包装类,反之为自动拆箱。此特性从JDK1.5开始引入,旨在简化代码并提高效率。文章通过示例说明了自动装箱可能导致的空指针异常,并解析了Integer类的valueOf()方法实现,揭示了数值在一定范围内会被缓存以节省内存。
摘要由CSDN通过智能技术生成

序. java基本类型介绍

java中,基本数据类型一共有8种,详细信息如下表:

类型 大小 范围 默认值
byte 8 -128 - 127 0
short 16 -32768 - 32768 0
int 32 -2147483648-2147483648 0
long 64 -9233372036854477808-9233372036854477808 0
float 32 -3.40292347E+38-3.40292347E+38 0.0f
double 64 -1.79769313486231570E+308-1.79769313486231570E+308 0.0d
char 16 \u0000 - u\ffff \u0000
boolean 16 true/false false


Java语言是一种面向对象的语言,但是Java中的基本数据类型却是不面向对象的,这在实际使用时存在很多的不便,为了解决这个不足,设计者将每个基本数据类型单独封装成一个类,这八个和基本数据类型对应的类统称为包装类(Wrapper Class)。

1.什么是自动拆箱与自动装箱

自动装箱:把基本类型用它们对应的包装类包装起来,使它们具有对象的特质,可以调用所对应的包装类所定义的方法,比如toString()等。

举个例子:

   Integer i0 = new Integer(0);
   Integer i1 = 2;
   Integer i1_ = Integer.valueOf(2);

上面的三行代码第一行是最基本的创建一个integer对象的方式。第二行代码就是我们这里要讲的自动装箱。而第三行代码就是第二行代码的本质,也就是说,当你使用自动装箱来得到一个引用数据类型时,jvm实际上调用了valueOf()方法,稍后我们会去研究一下java源码。

自动拆箱:跟自动装箱的方向相反,将Integer及Double这样的包装类的对象重新简化为基本类型的数据。

举个例子:

        1.System.out.println(i1+2);

这句代码就使用了自动拆箱。i1是我们上面通过自动装箱得到的一个integer对象,而这个对象是不

评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值