zoukankan      html  css  js  c++  java
  • 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();    

    三、推荐阅读

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

  • 相关阅读:
    django 2.0 path
    Django
    ORM
    Django简介
    web框架
    HTTP协议
    web应用
    索引
    pyMysql模块
    视图、触发器、存储过程、函数
  • 原文地址:https://www.cnblogs.com/newbie27/p/10416085.html
Copyright © 2011-2022 走看看