您的位置:首页 > 编程语言 > Java开发

JAVA中的自动装箱和自动拆箱(AutoBoxing,Unboxing)

2018-04-03 15:05 239 查看
转载于 https://blog.csdn.net/ckinghan58/article/details/71404102JAVA语言中有个名词叫自动拆箱、装箱,那这个自动拆箱、装箱到底是指啥?自动拆箱、装箱是从JDK1.5开始才有的特性,其实它主要就是指基本类型与包装类的自动转换。如int 与Integer类型。 
int 是基本类型,而Integer是int的包装类,在JDK1.5之前,int类型的值是不能直接赋给Integer类型的值 的,也就是说 
Integer integer = 5; 会报错,因为5是基本类型,而Integer是包装类,Integer的正确定义方式为: 
Integer integer = new Integer(5); 但是,从基本类型转换成包装类是经常使用的操作,尤其是Integer与int的转换很是频繁。所以
在JDK1.5开始,它们之间的转换不在须要程序员再去进行转换了,JDK已经将它自动进行了转换,这种操作就叫自动拆箱、装箱。
int i = 5;
Integer ii = i;     //这种写法在JDK1.5及以后的版本是正确的,因为系统会自动将int向Integer进行转换,这种操作就叫自动装箱。

int j = ii;         //这种写法是将Integer的值自动转换成了int基本类型,这种自动转换的方法就叫自动拆箱。
1
2
3
4

什么时候自动装箱

自动装箱
当我们创建一个Integer对象时,却可以这样:Integer i = 100;实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = Integer.valueOf(100);此即基本数据类型的自动装箱功能。

什么时候自动拆箱

  自动拆箱(unboxing),也就是将对象中的基本数据从对象中自动取出。如下可实现自动拆箱:1 Integer i = 10; //装箱 
2  int t = i; //拆箱,实际上执行了 int t = i.intValue();不只是int与Integer可以自动转换,八大基本类型都可以, 以下是八大基本类型及对应的包装炻基本类型 byte short int long float double char boolean 
包装类型 Byte Short Integer Long Float Double Character Boolean其中,int与Integer的转换最多也最频繁,所以有一点要注意,也是面试时常问到的问题: 
int与Integer的区别: 
1.int的默认值 为0,而Integer的默认值为null,在使用Integer前需要初始化。 
2.int是基本类型,而Integer是包装类,可以自动 拆箱、拆箱,Integer封装了很多的方法,
参考链接: https://blog.csdn.net/u013078669/article/details/52766011
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: