跟王老师学泛型: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自动装箱与拆箱的主要内容,如果未能解决你的问题,请参考以下文章

自动装箱与拆箱

跟王老师学泛型:泛型拾遗

Java自动装箱与拆箱

跟王老师学泛型:定义泛型接口及实现

Java 自动装箱与拆箱

了解Java的自动装箱与拆箱