• Java核心(四):Java中的装箱和拆箱


    一、为什么需要装箱和拆箱?

      基础数据类型是数据,不是对象,也不是Object的子类。Java为每种基本数据类型都提供了对应的包装器类型。装箱就是自动将基本数据类型转换为包装器类型;拆箱就是自动将包装器类型转换为基本数据类型。

      把一个基本类型包装成对应的包装器类对象,有以下三点好处:

    1. 一是包装器类对象具有很多可以调用的方法;
    2. 二是Java向面像对象语言的靠近。其实Java还不算是很纯的面向对象的语言。真正的面向对象,是没有基本数据类型的。它只有一种类型,就是对象;
    3. 三是在泛型中,基本类型是不可以做泛型参数的。如:List <int> list = new ArrayList<int> ();这是不合法的。你只能这个样写List<Integer> list = new ArrayList<Integer> ();也就是要用int型的包装类类型来解决基本类型不可以做泛型参数的问题 。

      八种基本数据类型,对应的包装器类型如下图:

      

        

    二、什么是自动装箱、自动拆箱?

      基本数据类型的自动装箱(autoboxing)、拆箱(unboxing)是自J2SE 5.0开始提供的功能。 

    1、自动装箱

       当我们创建一个Integer对象时,可以这样:

    Integer obj = 100; //实际上,系统执行了Integer obj = Integer.valueOf(100);

      实际上,执行上面那句代码的时候,系统为我们执行了:Integer obj = Integer.valueOf(100); 这就是基本数据类型的自动装箱功能。

    2、自动拆箱

      自动拆箱(unboxing),也就是将对象中的基本数据从包装器对象中自动取出。如下可实现自动拆箱:

    Integer obj = 10;   //装箱,实际上执行了 Integer obj = Integer.valueOf(10);
    int num = obj;       //拆箱,实际上执行了 int num = obj.intValue();    

    三、推荐阅读

      装箱和拆箱实现的原理?面试中装箱和拆箱的问题?推荐阅读以下博客:

  • 相关阅读:
    魔术球问题
    【模板】网络最大流
    [SCOI2010]股票交易
    [SCOI2009]生日礼物
    [HAOI2007]修筑绿化带
    [HAOI2007]理想的正方形
    [USACO12MAR]花盆Flowerpot
    滑动窗口
    斐波那契公约数
    [SDOI2008]仪仗队
  • 原文地址:https://www.cnblogs.com/newbie27/p/10416085.html
Copyright © 2020-2023  润新知