【JAVA基础之装箱和拆箱】自动装箱和自动拆箱

🔥作者主页:小林同学的学习笔录

🔥mysql专栏:小林同学的专栏

目录

1.包装类

1.1  概述

1.2  Integer类

1.3  装箱和拆箱

1.4  自动装箱和自动拆箱

1.5  基本类型与字符串之间的转换

1.5.1  基本类型转换为字符串

1.5.2  字符串转换成基本类型


1.包装类

1.1  概述

Java提供了两个类型系统,基本类型与引用类型,使用基本类型在于效率,然而很多情况,会创建对象使用,因为对象可以做更多的功能,如果想要我们的基本类型像对象一样操作,就可以使用基本类型对应的包装类,如下:

1.2  Integer类

Integer类构造方法及静态方法

1.3  装箱和拆箱

在Java中,装箱(Boxing)和拆箱(Unboxing)是将基本数据类型转换为对应的包装类型和将包

装类型转换为基本数据类型的过程。

  1. 装箱(Boxing):装箱是指将基本数据类型(如int、double、boolean等)转换为对应的包装类型(如Integer、Double、Boolean等)。这通常发生在需要将基本数据类型作为对象使用的情况下,例如将一个int赋值给一个Integer对象。

    int primitiveInt = 10;
    Integer boxedInt = Integer.valueOf(primitiveInt); // Boxing
    
  2. 拆箱(Unboxing):拆箱是指将包装类型转换为对应的基本数据类型。这通常发生在需要将包装类型中的值提取为基本数据类型时。

    Integer boxedInt = Integer.valueOf(20);
    int primitiveInt = boxedInt.intValue(); // Unboxing
    

在Java中,自动装箱和自动拆箱是支持的,这意味着在需要时编译器会自动进行类型转换,而无需显式地调用valueOf()intValue()等方法。例如:

int primitiveInt = 10;
Integer boxedInt = primitiveInt; // Auto-boxingInteger boxedInt = Integer.valueOf(20);
int primitiveInt = boxedInt; // Auto-unboxing

注意:尽管自动装箱和自动拆箱提供了便利,但在处理可能为 null 的包装类型时,需要格外小心,以避免空指针异常

eg:Boolean自动拆箱时需要注意,Boolean有可能为null,如果为null,则会抛出异常,因此需要进行相应的处理

1.4  自动装箱和自动拆箱

Integer i = 4;//自动装箱。相当于Integer i = Integer.valueOf(4);
i = i + 5;//等号右边:将i对象转成基本数值(自动拆箱) i.intValue() + 5;
//加法运算完成后,再次装箱,把基本数值转成对象。

1.5  基本类型与字符串之间的转换

1.5.1  基本类型转换为字符串

  • 方式一:直接在数字后加一个空字符串

  • 方式二:通过String类静态方法valueOf()

代码演示:

public class IntegerDemo {public static void main(String[] args) {//int --- Stringint number = 100;//方式1String s1 = number + "";System.out.println(s1);//方式2//public static String valueOf(int i)String s2 = String.valueOf(number);System.out.println(s2);System.out.println("--------");}
}

1.5.2  字符串转换成基本类型

除了Character类之外,其他所有包装类都具有parseXxx静态方法可以将字符串参数转换为对应的基本类型:

  • public static byte parseByte(String s):将字符串参数转换为对应的byte基本类型。

  • public static short parseShort(String s):将字符串参数转换为对应的short基本类型。

  • public static int parseInt(String s):将字符串参数转换为对应的int基本类型。

  • public static long parseLong(String s):将字符串参数转换为对应的long基本类型。

  • public static float parseFloat(String s):将字符串参数转换为对应的float基本类型。

  • public static double parseDouble(String s):将字符串参数转换为对应的double基本类型。

  • public static boolean parseBoolean(String s):将字符串参数转换为对应的boolean基本类型。

注意:如果字符串参数的内容无法正确转换为对应的基本类型,则会抛出java.lang.NumberFormatException异常。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9092.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(24)实时采集微信消息(基于独立窗体)-微信UI自动化(.Net+C#)

整理 | 小耕家的喵大仙 出品 | CSDN(ID:lichao19897314) Q Q | 978124155 往期知识回顾 (1)开启探索微信自动化之路-微信UI自动化(.NetC#) (2)初始化微信窗体UI自动化实例-微信UI自动化(.NetC#) (3)采用热键终止微信采集任务-微信UI自动…

JavaScript初了解

JS的三种书写位置:行内,内嵌,外部 JS的注释的书写:单行注释:// ctrl/ 多行注释:/**/ ShiftAltA JavaScript输入输出语句

【热门话题】如何通过AI技术提升内容生产的效率与质量

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 如何通过AI技术提升内容生产的效率与质量引言一、自然语言处理(NLP&…

【备战软考(嵌入式系统设计师)】11 - 硬件电路基础

逻辑门电路 首先我们需要先了解三个最基础的门电路,可以说我们一切的电子产品的基石就是这哥仨,它们就与,或,非。 与门和或门有两个输入端,一个输出端;非门有一个输入端一个输出端。 在我们数字电路中&a…

【爬虫基础1.1课】——requests模块

目录索引 requests模块的作用:实例引入: 特殊情况:锦囊1:锦囊2: 这一个栏目,我会给出我从零开始学习爬虫的全过程。感兴趣的小伙伴可以关注一波,用于复习和新学都是不错的选择。 那么废话不多说&#xff0c…

Leetcode—394. 字符串解码【中等】

2024每日刷题&#xff08;131&#xff09; Leetcode—394. 字符串解码 实现代码 class Solution { public:string decodeString(string s) {string curstr;int curNum 0;stack<pair<string, int>> st; for(char c: s) {if(isdigit(c)) {curNum curNum * 10 (c…

【Linux网络编程】HTTPS协议

【Linux网络编程】HTTPS协议 目录 【Linux网络编程】HTTPS协议HTTPS介绍加密常见的加密方式HTTPS的工作过程探究&#xff08;重点&#xff09;常见问题完整流程总结 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2024.5.9 前言&#xff1a;本篇博客将会介绍HTTPS协议 HTTPS…

proteus使用问题

1、无法和视频里面一样新建工程 2、实验效果和视频不也一样 自己的电路图(灯不亮)&#xff1a;

C语言—深入理解指针(1)

1.内存和地址 1.1 内存 计算机上CPU&#xff08;中央处理器&#xff09;在处理数据的时候&#xff0c;需要的数据是在内存中读取的&#xff0c;处理后的数据也会放回内存中&#xff0c;那我们买电脑的时候&#xff0c;电脑上内存是8GB/16GB/32GB 等&#xff0c;其实管理方式也…

Python从0到POC编写--实用小脚本02

爆破脚本&#xff1a; 爆破脚本也是我们经常使用的东西 这里就简单讲讲后台爆破脚本的编写吧 在编写之前&#xff0c;我们先通过访问网站去看看情况 首先我们可以先登录看看 输入账号 admin &#xff0c;密码 12345 后 登录失败&#xff0c;提示 用户名或密码错误 在输入…

探秘Tailwind CSS:前端开发的加速器(Tailwind CSS让CSS编写更简洁)

文章目录 📖 介绍 📖🏡 演示环境 🏡📒 Tailwind CSS 📒📝 快速体验📝 深入学习⚓️ 相关链接 ⚓️📖 介绍 📖 在这个快速迭代的互联网时代,前端开发效率和设计质量的双重要求,使得开发者们不断寻求更高效的工具和方法。今天,我们要介绍的是一个能够极大…

java面向对象实现文字格斗游戏细节完善版

为了完善上一篇的文字格斗游戏的细节&#xff0c;所以加了些代码&#xff0c;使得交互更加的具体有趣! 效果 大家可以多运行几次代码&#xff0c;得到不同的战况&#xff01;&#xff01; 代码实现 1.bean类 import java.util.Random;public class TextGame {private Strin…

[性能优化] ScrollView视图优化为循环列表

问题描述&#xff1a; 原先商城的物品栏中的item 是load在一个scrollView 下&#xff0c;用于滑动查看。仅仅在父级panel下是使用了NGUI原生的scrollview 组件&#xff0c;随着商场物品列表中新物品的增多。panel下加载的实例也非常庞大。而大部分的实例用户也无法看到&#x…

python代码无法点击进入,如何破???

python代码无法点击进入&#xff0c;如何破&#xff1f;&#xff1f;&#xff1f; 举个栗子&#xff1a; model.chat是无法进入的&#xff0c;这时可以使用如下的命令进行操作&#xff1a; ?model.chat

Day31:单元测试、项目监控、项目部署、项目总结、常见面试题

单元测试 保证独立性。 Assert&#xff1a;断言&#xff0c;一般用来比较是否相等&#xff0c;比如 Assert.assertEquals 在JUnit测试框架中&#xff0c;BeforeClass&#xff0c;Before&#xff0c;After和AfterClass是四个常用的注解&#xff0c;它们的作用如下&#xff1a; …

Vue--》从零开始打造交互体验一流的电商平台(一)

今天开始使用 vue3 ts 搭建一个电商项目平台&#xff0c;因为文章会将项目的每处代码的书写都会讲解到&#xff0c;所以本项目会分成好几篇文章进行讲解&#xff0c;我会在最后一篇文章中会将项目代码开源到我的github上&#xff0c;大家可以自行去进行下载运行&#xff0c;希…

Pyserini

文章目录 关于 Pyserini安装&#x1f3ac;如何搜索&#xff1f;&#x1f64b;如何给我的语料集建立索引 关于 Pyserini github : https://github.com/castorini/pyseriniPyserini: An Easy-to-Use Python Toolkit to Support Replicable IR Research with Sparse and Dense Re…

第09章 局域网技术(拓扑结构设计+FDDI工作机制)

9.1 本章目标 了解IEEE 802局域网标准掌握局域网拓扑结构了解10Base以太网了解快速以太网熟悉交换式以太网了解千兆位以太网了解其它种类的局域网局域网中的常用技术 9.2 局域网概述 罗伯特梅特卡夫个人简介 罗伯特梅特卡夫&#xff08;Robert Metcalfe&#xff0c;1…

【镜像仿真篇】磁盘镜像仿真常见错误

【镜像仿真篇】磁盘镜像仿真常见错误 记系统镜像仿真常见错误集—【蘇小沐】 1、实验环境 2023AFS39.E01&#xff08;Windows11系统镜像&#xff09;Arsenal Image Mounter&#xff0c;[v3.10.262]‍Vmware Workstation 17 Pro&#xff0c;[v17.5.1]Windows 11 专业工作站版…