Java中的自动装箱与拆箱_

Java中的自动装箱与拆箱_

ID:63496659

大小:15.75 KB

页数:10页

时间:2021-09-08

Java中的自动装箱与拆箱__第1页
Java中的自动装箱与拆箱__第2页
Java中的自动装箱与拆箱__第3页
Java中的自动装箱与拆箱__第4页
Java中的自动装箱与拆箱__第5页
资源描述:

《Java中的自动装箱与拆箱_》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、Java中的自动装箱与拆箱_自动装箱和拆箱从Java1.5开头引入,目的是将原始类型值转自动地转换成对应的对象。自动装箱与拆箱的机制可以让我们在Java的变量赋值或者是方法调用等状况下用法原始类型或者对象类型更加简洁挺直。假如你在Java1.5下进行过编程的话,你肯定不会生疏这一点,你不能挺直地向集合(Collections)中放入原始类型值,由于集合只接收对象。通常这种状况下你的做法是,将这些原始类型的值转换成对象,然后将这些转换的对象放入集合中。用法Integer,Double,Boolean等这些类我们可以将原始类型值转换成对应的对象,但是从某些程度可能使得代码不

2、是那么简洁精炼。为了让代码简练,Java1.5引入了具有在原始类型和对象类型自动转换的装箱和拆箱机制。但是自动装箱和拆箱并非完善,在用法时需要有一些留意事项,假如没有搞明白自动装箱和拆箱,可能会引起难以察觉的bug。本文将介绍,什么是自动装箱和拆箱,自动装箱和拆箱发生在什么时候,以及要留意的事项。什么是自动装箱和拆箱自动装箱就是Java自动将原始类型值转换成对应的对象,比如将int的变量转换成Integer对象,这个过程叫做装箱,反之将Integer对象转换成int类型值,这个过程叫做拆箱。由于这里的装箱和拆箱是自动进行的非人为转换,所以就称作为自动装箱和拆箱。原始类型

3、byte,short,char,int,long,float,double和boolean对应的封装类为Byte,Short,Character,Integer,Long,Float,Double,Boolean。自动装箱拆箱要点自动装箱时编译器调用valueOf将原始类型值转换成对象,同时自动拆箱时,编译器通过调用类似intValue(),doubleValue()这类的方法将对象转换成原始类型值。自动装箱是将boolean值转换成Boolean对象,byte值转换成Byte对象,char转换成Character对象,float值转换成Float对象,int转换成In

4、teger,long转换成Long,short转换成Short,自动拆箱则是相反的操作。何时发生自动装箱和拆箱自动装箱和拆箱在Java中很常见,比如我们有一个方法,接受一个对象类型的参数,假如我们传递一个原始类型值,那么Java会自动讲这个原始类型值转换成与之对应的对象。最经典的一个场景就是当我们向ArrayList这样的容器中增加原始类型数据时或者是创建一个参数化的类,比如下面的ThreadLocal。ArrayListIntegerintList=newArrayListInteger();intList.add(1);//autoboxing-primitivet

5、oobjectintList.add(2);//autoboxingThreadLocalIntegerintLocal=newThreadLocalInteger();intLocal.set(4);//autoboxingintnumber=intList.get(0);//unboxingintlocal=intLocal.get();//unboxinginJava举例说明上面的部分我们介绍了自动装箱和拆箱以及它们何时发生,我们知道了自动装箱主要发生在两种状况,一种是赋值时,另一种是在方法调用的时候。为了更好地理解这两种状况,我们举例进行说明。赋值时这是最常见的

6、一种状况,在Java1.5以前我们需要手动地进行转换才行,而现在全部的转换都是由编译器来完成。//beforeautoboxingIntegeriObject=Integer.valueOf(3);IntiPrimitive=iObject.intValue()//afterjava5IntegeriObject=3;//autobxing-primitivetowrapperconversionintiPrimitive=iObject;//unboxing-objecttoprimitiveconversion方法调用时这是另一个常用的状况,当我们在方法调用时,我们

7、可以传入原始数据值或者对象,同样编译器会帮我们进行转换。publicstaticIntegershow(IntegeriParam){System.out.println("autoboxingexample-methodinvocationi:"+iParam);returniParam;}//autoboxingandunboxinginmethodinvocationshow(3);//autoboxingintresult=show(3);//unboxingbecausereturntypeofmethodisIntegersh

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。