黑马程序员技术交流社区

标题: java自动拆装箱的问题 [打印本页]

作者: 萌小子    时间: 2013-5-14 12:06
标题: java自动拆装箱的问题
本帖最后由 王盟盟 于 2013-5-18 10:41 编辑

看视频将java可以自动拆装箱,但不是特别明白。有谁能简单讲讲,要言简意赅的。
麻烦举几个例子好么。
作者: eycrckag    时间: 2013-5-14 12:13
一句话,就是自动转成几本数据类型和引用数据类型
作者: 尹丽峰    时间: 2013-5-14 12:15
自动装箱只有在jdk1.5以上版本才有,
Integer in = 5;//装箱 把一个普通数据类类型的数以对象形式存入 这就是装箱
System.out.println(in+4);//拆箱 就是把对象中的数据还原成普通数据类型
作者: 飞鸟青崖    时间: 2013-5-14 12:25
自动装箱:Integer  b= 4;我们知道Integer是一个类,如果想要实例化它的对象的话,只能用new了。但是这里右边直接写的是4,这相当于用4代替了new Integer(4);
               这就是自动装箱。此时这个4是一个对象。
自动拆箱:还是上面的例子,int a = b+3.由于自动装箱后,b 代表着一个对象,按理说不能和3直接进行运算的,但是这里可以用。因为会把b自动换成int 型的4,
               然后再进行+3运算,这就是自动拆箱。
作者: 潘贵    时间: 2013-5-14 12:32
自动装拆箱是形象说法,其实就是数据的类型会自动转换
作者: 萌小子    时间: 2013-5-14 12:35
飞鸟青崖 发表于 2013-5-14 12:25
自动装箱:Integer  b= 4;我们知道Integer是一个类,如果想要实例化它的对象的话,只能用new了。但是这里右 ...

那自动拆装箱是不是只有基本数据类型才具备?
作者: 飞鸟青崖    时间: 2013-5-14 13:25
王盟盟 发表于 2013-5-14 12:35
那自动拆装箱是不是只有基本数据类型才具备?

不是基本数据类型的我只知道一个String,
可以类似的定义,但是我不知道这叫不叫自动装箱和自动拆箱。
作者: 殇_心。    时间: 2013-5-14 16:52
如果问题已解决,请及时修改分类,否则继续提问,谢谢合作!
作者: xuemeng    时间: 2013-5-14 18:56
本帖最后由 xuemeng 于 2013-5-14 19:06 编辑

自动装箱Integer i = 5  实际上java编译器会进行加工   Integer i = Integer.valueOf(5);   虽然我们写的是Integer i = 5, 但是到虚拟机那里, 虚拟机看到的实际上是 Integer i = Integer.valueOf(5);   

自动拆箱  Integer i = 5;      System.out.println(i + 4) ;  其实编译器加工处理   System.out.println(i.intValue() + 4);  变成这样, java虚拟机看到的就是这个样子!!!


至于有那些可以自动拆箱装箱, 基本类型数据都可以,   

我上个图  

未命名.jpg (32.9 KB, 下载次数: 0)

未命名.jpg

作者: Sword    时间: 2013-5-18 10:39
如果问题未解决,请继续追问,如果问题解决了,请点击你的帖子下面的"编辑"重新编辑帖子,将分类改为“已解决”,谢谢合作!
作者: 袁梦希    时间: 2013-5-18 12:44
如果问题已经解决了,那么大家请把帖子的类型改为“已解决”,在自己帖子的左下角点编辑,然后选择帖子的分类进行改正。{:soso_e163:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2