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();    

三、推荐阅读

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

原文地址:https://www.cnblogs.com/newbie27/p/10416085.html

时间: 2024-10-27 18:55:38

Java核心(四):Java中的装箱和拆箱的相关文章

深入剖析Java中的装箱和拆箱

阅读目录 一.什么是装箱?什么是拆箱?二.装箱和拆箱是如何实现的三.面试中相关的问题 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 回到顶部 一.什么是装箱?什么是拆箱? 我们知道 Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE5之前,如果要生成

深入剖析Java中的装箱和拆箱(转)

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有兴趣的朋友可以查阅相关资料.在Java SE

从别人那淘的知识 深入剖析Java中的装箱和拆箱

(转载的海子的博文   海子:http://www.cnblogs.com/dolphin0520/) 深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 原文浏览地址 http://www.cnblogs.com/dolphi

Java基础之包装类的自动装箱和拆箱详解

定义 在java中,数据类型可以分为两大类,即基本数据类型和引用数据类型,基本数据类型的数据不是对象,所以对于要将数据类型作为对象来使用的情况,java提供了相对应的包装类.(关于包装类的详细介绍请参看博客Java基础之常用类详解) 本篇博客主要讲述包装类的自动装箱和拆行机制. 所谓装箱,就是把基本数据类型用它们相对应的引用类型包起来,使它们可以具有对象的特质,如我们可以把int类型包装成Integer类型的对象,或者把double包装秤Double,等等. 所谓拆箱,就是和装箱的方向相反,将I

Java中的装箱与拆箱

在J2SE5.0后推出了自动装箱和拆箱的功能,以提高我们的开发效率,然而自动装箱和拆箱实际上是通过编译器来支持的(并非语言本身,或者说虚拟机),因而这种支持也隐藏了部分内部实质,再加上某些类的优化(比如Integer里面的缓存等,参看关于缓存节),就更加容易在特定的环境下产生问题,并且如果不知道原来还无法调试.以下先是简单的介绍了编译器对装箱和拆箱的实现,并根据实现简单介绍一下可能会遇到的几个问题. 在Java SE5之前,如果要生成一个数值为10的Integer对象,必须这样进行: Integ

Java基础——深入剖析Java中的装箱和拆箱

(转自:http://www.cnblogs.com/dolphin0520/p/3780005.html) 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题  一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器

深入解析Java中的装箱和拆箱

自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱.拆箱相关的问题. 以下是本文的目录大纲: 一.什么是装箱?什么是拆箱? 二.装箱和拆箱是如何实现的 三.面试中相关的问题 若有不正之处,请谅解和批评指正,不胜感激. 一.什么是装箱?什么是拆箱? 在前面的文章中提到,Java为每种基本数据类型都提供了对应的包装器类型,至于为什么会为每种基本数据类型提供包装器类型在此不进行阐述,有

Java中自动装箱与拆箱详解

在讲装箱与拆箱之前我们要先了解一下这个问题的来源: Java中的类型分为基本类型(Primitive type)和类类型(Class type)两种: 基本类型包括byte型.char型.short型.int型.long型.float型.double型.boolean型八种.基本类型指的是直接包含值得类型,可提供语言级别的支持. 类类型包括Byte.Character.Short.Integer.Long.Float.Double.Boolean.为什么要用类类型呢?原因其实很简单,因为Java

java中的装箱及拆箱

java中存在8中基本的数据类型,每一种数据类型都有包装类型. 包装类型:每一个基本的数据类型都会------对应一个包装类型. boolean------------------>Boolean int-------------------------->Integer 装箱和拆箱 装箱:把基本的数据类型转换成对应的包装类型. Integer i = 1  ;自动装箱.实际上在Integer.valueOf(); 拆箱:把包装类型转换成基本数据类型.基本数据类型 名称 = 对应的包装类型.