Java 装箱与拆箱详解及实例代码

Java 装箱与拆箱详解及实例代码

什么是装箱与拆箱

在Java中,基本的数据类型包括byte, short, int, long, float, double, char, boolean等。而Java中还有一种引用类型,例如String、Scanner等。在此基础上,Java还增加了一种特殊的包装类型,它们分别是Byte, Short, Integer, Long, Float, Double, Character, Boolean。这些包装类型可以将基本类型的数据“包装”在内,在某些时候可以避免“自动拆箱”(unboxing)带来的一些问题。

装箱与拆箱就是指基本类型与对应的包装类型之间的转换。将基本类型转换成引用类型的过程称为装箱,将引用类型转换成基本类型则称为拆箱。而在Java中,对于基本类型和包装类型之间的赋值、传参等操作,编译器都会自动完成装箱和拆箱操作。

装箱与拆箱示例

装箱

int num = 20;
Integer number = Integer.valueOf(num);

在上述代码中,将基本类型的整型变量num通过静态方法valueOf转换为对应的包装类型,即装箱操作。

拆箱

Integer number = Integer.valueOf(30);
int num = number.intValue();

在上述代码中,将包装类型的整型变量number通过实例方法intValue转换为对应的基本类型,即拆箱操作。

装箱拆箱的作用

  • 将基本数据类型转换为对象类型,能够为基本类型赋予更多的属性和方法。
  • 使基本数据类型具有对象的特征,比如能够作为方法的参数,能够使用Object类的方法。
  • 在泛型操作中可以自动装箱和拆箱,使得代码更加简洁。

装箱与拆箱的注意事项

1. 装箱时可能会有“数据池”的概念

在Java中,基本类型和对应的包装类型都有“常用值”的概念。比如int类型的0,在Java中是非常常用的,所以在装箱时,Java认为重复使用相同的常用值是很常见的事情。所以会实现一个“代码池”,可以缓存常用值,避免前后相同的装箱操作重复创建实例。但是,对于溢出或超出常用值区间的数值,会新建对象。

2. 拆箱时可能会抛出NullPointerException异常

如果包装类型对象为null,在进行拆箱操作时会抛出NullPointerException异常。

Java 装箱与拆箱的实践

下面我们通过一个简单的例子来进行装箱与拆箱的实践。

public class BoxDemo {
    public static void main(String[] args) {
        int num = 20;
        Integer number = Integer.valueOf(num);
        System.out.println("装箱后的值: " + number);

        int num2 = Integer.valueOf(30).intValue();
        System.out.println("拆箱后的值: " + num2);
    }
}

在上述代码中,我们演示了如何进行装箱和拆箱操作,并且通过打印输出了它们的结果。

总结

  • 在Java中,装箱和拆箱操作是将基本类型和对应的包装类型相互转换的操作。
  • 装箱操作可以通过包装类型的静态方法valueOf进行。
  • 拆箱操作可以通过包装类型的实例方法intValue进行。
  • 装箱和拆箱操作的作用主要是为了使基本类型具有对象的特征,并且可以在泛型操作中方便地使用。
  • 在装箱和拆箱操作中可能会有一些需要注意的点,比如对象池和空指针异常等。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java 装箱与拆箱详解及实例代码 - Python技术站

(0)
上一篇 2023年5月23日
下一篇 2023年5月23日

相关文章

  • Java数组队列及环形数组队列超详细讲解

    Java数组队列及环形数组队列超详细讲解 什么是队列 队列(Queue)是一种先进先出(FIFO, first in first out)的数据结构,常见的队列有数组队列和链式队列两种实现方式。 数组队列 数组队列是一种线性结构,底层使用静态数组来存储数据。队列的头部(front)指向队列头部元素,队列尾(rear)指向队列尾部元素。当有新元素入队时,队列尾…

    Java 2023年5月26日
    00
  • 【9种】ElasticSearch分词器详解,一文get!!!| 博学谷狂野架构师

    ElasticSearch 分词器 作者: 博学谷狂野架构师 GitHub:GitHub地址 (有我精心准备的130本电子书PDF) 只分享干货、不吹水,让我们一起加油!? 概述 分词器的主要作用将用户输入的一段文本,按照一定逻辑,分析成多个词语的一种工具 什么是分词器 顾名思义,文本分析就是把全文本转换成一系列单词(term/token)的过程,也叫分词。…

    Java 2023年5月8日
    00
  • SpringMVC教程之文件上传与下载详解

    下面我会为大家详细讲解“SpringMVC教程之文件上传与下载详解”的完整攻略。 一、背景 在 web 开发中,文件的上传和下载是非常常见的操作。Spring 框架提供了相应的类和接口,可以方便地实现文件上传和下载功能。本文将结合两个实例,介绍 SpringMVC 的文件上传和下载的实现方法。 二、文件上传 2.1 概述 文件上传分为两步: 在表单中添加文件…

    Java 2023年6月15日
    00
  • Java 开发环境配置步骤(介绍)

    下面是 Java 开发环境配置步骤的详细攻略。 Java 开发环境配置步骤(介绍) 确认电脑是否已安装 Java 开发环境 在开始配置 Java 开发环境之前,我们需要先确认电脑是否已经安装了 Java 开发环境。打开终端(或命令提示符)输入以下命令: java -version javac -version 如果电脑已经安装了 Java 开发环境,将会输出…

    Java 2023年5月20日
    00
  • tomcat漏洞汇总

    Tomcat漏洞汇总 简介 Tomcat是Apache Foundation下的一个开源的Web服务器,在Web应用的开发中使用非常普遍。然而,Tomcat在使用过程中会存在各种漏洞,这些漏洞可能会导致服务器遭到攻击。 该文章旨在汇总Tomcat中的一些漏洞,并提供相关的解决方案和示例。 漏洞及解决方案 未授权访问 攻击者可以通过未授权访问进入Tomcat的…

    Java 2023年6月2日
    00
  • 阿里云服务器linux系统搭建Tomcat部署Web项目

    关于在阿里云服务器搭建Tomcat并部署Web项目的攻略,我们可以分为以下几个步骤进行讲解: 购买阿里云服务器 首先我们需要购买一台阿里云服务器,选择好服务器的操作系统,建议选择一款稳定的Linux系统,例如CentOS或Ubuntu,这里我们以CentOS 7为例。 安装Java环境 在成功登录服务器后,我们需要安装Java环境,Tomcat是基于Java…

    Java 2023年5月19日
    00
  • Mybatis模糊查询和动态sql语句的用法

    接下来我将详细讲解”Mybatis模糊查询和动态sql语句的用法”的完整攻略。 Mybatis模糊查询 模糊查询一般用于根据用户输入的关键字(搜索词)模糊匹配查询数据库中的数据。在Mybatis中,可以使用LIKE关键字实现模糊查询。 下面是一条简单的Mybatis模糊查询的代码示例: <select id="findUserByName&q…

    Java 2023年5月20日
    00
  • 深入探究Spring底层核心原理

    深入探究Spring底层核心原理 本文将详细讲解Spring底层核心原理,包括Spring的IoC和AOP两个主要功能模块的具体实现原理。 IoC的实现原理 IoC的全称是Inversion of Control,即控制反转。它提供了一种机制,可以将对象的创建和依赖关系的管理从应用程序代码中抽离出来,从而降低了代码的耦合性,并使得代码更易于理解和维护。 Sp…

    Java 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部