跟王老师学泛型:Java自动装箱与拆箱
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了跟王老师学泛型:Java自动装箱与拆箱相关的知识,希望对你有一定的参考价值。
Java 自动装箱与拆箱(Autoboxing and unboxing)主讲教师:王少华 QQ群:483773664
学习目标:
掌握Java 基本数据对应的包装类
掌握Java 自动装箱与拆箱
一、基本数据类型对应的包装类
Java为每一种基本数据类型都提供了一个包装类,而这些包装类就在java.lang包中。Java共有8个包装类。如下图所示:
包装所有数字类型类都继承自Number类,Number类是一个抽象类。
二、什么是自动装箱拆箱
基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。
一般我们要创建一个类的对象实例的时候,我们会这样:
1 | Class a = new Class(parameter); |
当我们创建一个Integer对象时,却可以这样:
1 | Integer i = 100 ; //注意:不是 int i = 100; |
实际上,执行上面那句代码的时候,系统为我们执行了:Integer i = Integer.valueOf(100);此即基本数据类型的自动装箱功能
1 2 | Integer integer100= 100 ; int int100=integer100; |
从上面的代码中,大家可看出integer100为一个Integer类型的引用,int100为一个int类型的原始数据类型。但是,我们可以将一个Integer类型的对象赋值给其相应原始数据类型的变量。这便是拆箱。
拆箱与装箱是相反的操作。装箱是将一个原始数据类型赋值给相应封装类的变量。而拆箱则是将一个封装类的变量赋值给相应原始数据类型的变量。
三、基本数据类型与包装类的差别
基本数据类型不是对象,也就是使用int、double、boolean等定义的变量、常量。基本数据类型没有可调用的方法。
包装类是对象,后面就有很多方法可让你调用了
比如方法:字符串转基本数据类型
方法:public static type parseType(String type)
1 2 3 4 | //字符型整数,转int int num3 = Integer.parseInt( "23" ); //Boolean boolean bool = Boolean.parseBoolean( "true" ); |
其他方法大家可以去API查看
四、面试题
1 2 3 4 5 6 7 8 9 10 | public static void main(String[] args) { Integer a = 100 ; Integer b = 100 ; System.out.println(a==b); System.out.println(a.equals(b)); Integer num1 = 500 ; Integer num2 = 500 ; System.out.println(num1==num2); System.out.println(num1.equals(num2)); } |
原因
对于128到127(默认是127)之间的值,Integer.valueOf(int i) 返回的是缓存的Integer对象(并不是新建对象)
而其他值,执行Integer.valueOf(int i) 返回的是一个新建的 Integer对象,
五、学习视频网址:
http://edu.51cto.com/course/course_id-6083.html
以上是关于跟王老师学泛型:Java自动装箱与拆箱的主要内容,如果未能解决你的问题,请参考以下文章