跟王老师学泛型(二):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));
     }

跟王老师学泛型(二):Java自动装箱与拆箱_第1张图片

原因

跟王老师学泛型(二):Java自动装箱与拆箱_第2张图片

对于128到127(默认是127)之间的值,Integer.valueOf(int i) 返回的是缓存的Integer对象(并不是新建对象)

而其他值,执行Integer.valueOf(int i) 返回的是一个新建的 Integer对象,


五、学习视频网址:

http://edu.51cto.com/course/course_id-6083.html






来自为知笔记(Wiz)


你可能感兴趣的:(java,包装,教师)