Java 自动装箱与拆箱(Autoboxing and unboxing)
主讲教师:王少华 QQ群:483773664
学习目标:
掌握Java 基本数据对应的包装类
掌握Java 自动装箱与拆箱
一、基本数据类型对应的包装类
Java为每一种基本数据类型都提供了一个包装类,而这些包装类就在java.lang包中。Java共有8个包装类。如下图所示:
包装所有数字类型类都继承自Number类,Number类是一个抽象类。
二、什么是自动装箱拆箱
基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。
一般我们要创建一个类的对象实例的时候,我们会这样:
1 |
|
当我们创建一个Integer对象时,却可以这样:
1 |
|
实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = Integer.valueOf(100);此即基本数据类型的自动装箱功能
1 2 |
|
从上面的代码中,大家可看出integer100为一个Integer类型的引用,int100为一个int类型的原始数据类型。但是,我们可以将一个Integer类型的对象赋值给其相应原始数据类型的变量。这便是拆箱。
拆箱与装箱是相反的操作。装箱是将一个原始数据类型赋值给相应封装类的变量。而拆箱则是将一个封装类的变量赋值给相应原始数据类型的变量。
三、基本数据类型与包装类的差别
基本数据类型不是对象,也就是使用int、double、boolean等定义的变量、常量。基本数据类型没有可调用的方法。
包装类是对象,后面就有很多方法可让你调用了
比如方法:字符串转基本数据类型
方法:public static type parseType(String type)
1 2 3 4 |
|
其他方法大家可以去API查看
四、面试题
1 2 3 4 5 6 7 8 9 10 |
|
原因
对于128到127(默认是127)之间的值,Integer.valueOf(int i) 返回的是缓存的Integer对象(并不是新建对象)
而其他值,执行Integer.valueOf(int i) 返回的是一个新建的 Integer对象,
五、学习视频网址:
http://edu.51cto.com/course/course_id-6083.html