【java基础】包装类,自动装箱和自动拆箱

文章目录

  • 基本介绍
  • 包装类
  • 自动装箱
  • 自动拆箱
  • 包装类注意事项
    • 包装类比较
    • 包装器内容不可变

基本介绍

有时,需要将int这样的基本类型转换为对象。所有的基本类型都有一个与之对应的类。
例如,Integer类对应基本类型int。通常,这些类称为包装器(wrapper)。这些包装器类有显而易见的名字:Integer、Long、Float、Double、Short、Byte、Character和Boolean(前6个类派生于公共的超类number)。

包装器类是不可变的,即一旦构造了包装器,就不允许更改包装在其中的值。同时,包装器类还是final,因此不能派生它们的子类。

包装类

每个基本数据类型都对应一个包装类,名称就是首字母大小。包装类是一个类,所以拥有许多方法,我们可以利用这些方法很任意的对数据进行操作,下面以Interger进行举例

The Integer class wraps a value of the primitive type int in an object. An object of type Integer contains a single field whose type is int.
In addition, this class provides several methods for converting an int to a String and a String to an int, as well as other constants and methods useful when dealing with an int.

上面就是Interger类上的注释,就表示Integer就是包含了int值的对象,提供了一些int->String和String->int 的方法

    public static void main(String[] args) {int num = Integer.parseInt("111", 2);System.out.println(num); // 输出7}

上面就是一个例子,我们可以利用Integer的静态方法parseInt将字符串转换为int,还可以指定进制。
对于创建Integer对象,有2种方法,如下

        // 通过构造器创建Integer integer1 = new Integer(7);//通过静态方法valueOf创建Integer integer2 = Integer.valueOf(8);

创建了Integer对象后就可以使用一系列的方法了
在这里插入图片描述

具体使用方法参考api文档,对于其他几个包装类使用方法类似

自动装箱

自动装箱就是在需要的时候,基本数据类型会自动被装配成为对应的包装类,这里还是使用int和Integer进行举例

        Integer a = 1;

上面代码我们直接将基本数据类型赋值给了一个类,按理来说,这个代码应该报错,事实上,上面代码并不会报错,就是因为自动装箱机制。上面代码等价于下面代码

        Integer a = Integer.valueOf(1);

对于int来说,自动装箱就是在有需要的时候就会自动被装配为Integer

自动拆箱

自动拆箱就是自动装箱的逆过程,在需要的时候,包装类会被自动转换为对应的基本数据类型,还是使用int和Integer进行举例

        Integer a = new Integer(1);a++;System.out.println(a);

上面的代码我们使用对对象使用了++运算符,这是不运行的,但是由于自动拆箱机制,在执行a++这行代码时,会将a转换为int,然后再执行++操作,然后再转换回Integer。等价于下面代码

        Integer a = new Integer(1);int b = a.intValue();b++;a = Integer.valueOf(b);System.out.println(a);

包装类注意事项

包装类比较

我们对包装类的比较不要使用2个等号来进行比较,因为对象使用 == 比较的是地址,例如下面代码

        Integer a = 10000;Integer b = 10000;System.out.println(a == b); // 输出false

我们应当使用 a.equals(b)来进行比较

        Integer a = 10000;Integer b = 10000;System.out.println(a.equals(b)); // 输出true

对于自动装箱有一些注意事项如下

自动装箱规范要求boolean、byte、chars127,介于-128和127之间的short和int
被包装到固定的对象中。例如,如果在前面的例子中将a和b初始化为100,那么它们
的比较结果一定成功。

我们将上面代码中的a和b改成100,那么使用==比较将会输出true

        Integer a = 100;Integer b = 100;System.out.println(a == b); // 输出true

应为对于Integer,值为-128 – 127的Integer对象已经创建了缓存起来了,构建Integer对象时不会创建新的对象,具体内容参考Integer里面的IntegerCache类
在这里插入图片描述

包装器内容不可变

还是使用Integer进行举例,只要我们在构建Integer后,那么Integer的值就已经不能够改变了,应为Integer里面的值是使用final进行修饰的
在这里插入图片描述

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

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

相关文章

纸箱外观设计 包装盒版面设计 纸箱尺寸设计 纸箱纸盒包装设计 纸箱设计图

瓦楞纸板是由面纸、里纸、芯纸和加工成波形瓦楞的瓦楞纸通过粘合而成。根据商品包装的需求,瓦楞纸板可以加工成单面瓦楞纸板、三层瓦楞纸板、五层、七层、十一层等瓦楞纸板。 不同波纹形状的瓦楞,粘结成的瓦楞纸板的功能也有所不同。即使使用同样质量的面…

今年下半年程序员生存指南!

​ 见字如面,我是军哥! 今天早上一醒来发现今天都 7 月 3 日,2023 的上半年已经悄然无声的离开我们了,你今年上半年目标达成如何? 最近看到新闻报道 5 月份,我国青年失业率 20.8%,比 4 月还高了…

脉脉、兼职猫逐梦AIGC,在线招聘江湖酝酿新变?

配图来自Canva可画 求职难与招聘难同时出现,人力资源行业供需双方互相嫌弃的问题如何解决?人力资源平台给出了新答案——AIGC。 2023年是AIGC在人力资源市场集中爆发的一年。脉脉平台上线类ChatGPT产品“万能的脉友”;数字化灵活用工平台兼…

AutoGPT太火了,无需人类插手自主完成任务,GitHub2.7万星

点击上方“AI遇见机器学习”,选择“星标”公众号 第一时间获取价值内容 来自|机器之心 OpenAI 的 Andrej Karpathy 都大力宣传,认为 AutoGPT 是 prompt 工程的下一个前沿。 近日,AI 界貌似出现了一种新的趋势:自主人工…

Ubuntu下不能切换中文,qt creator无法输入中文,sogo输入法(详细步骤)

目录: 1、解决ubuntu 不支持切换中文,并安装sogo输入法步骤; 2、解决Qt Creator不支持中文输入: 详细步骤: 一、解决ubuntu 不支持切换中文,并安装sogo输入法步骤: 1、如果在键盘输入法系统中&a…

经典文献阅读之—OverlapNet

点击上方“3D视觉工坊”,选择“星标” 干货第一时间送达 作者丨lovely_yoshino 来源丨古月居 简介 我们在之前的博客中讨论了一些激光回环检测的方法,但是基本都是围绕着点云特征去做的,并未涉足过深度学习的相关方法,之前作者在查…

文献阅读——How to give an Academic Talk

How to give an Academic Talk v4.0 By Paul N. Edwards,School of Information University of Michigan The awful academic talk 令人讨厌的学术演讲
这一场景你也许经历了上百次:
演讲者走进房子低下头,坐在桌边,不几乎不能透过眼前的…

一分钟get✔一个文献阅读的最核心技巧(用的是小绿鲸文献阅读器)

文章目录 最最核心的技巧——建立个人语料库其他技巧思维导图模板以及导图和大纲的相互转换一键导入知网文献自定义数据库的网址翻译 博主申请的福利 最最核心的技巧——建立个人语料库 参考我的语料库标签 每读一篇 就积累一些语料, 这样写的时候 写引言&#xff…

英文文章写作|文献管理|​​​​​​​阅读文献|引用文献|国内文章

目录 英文文章写作 1.阅读10篇文献,总结100个常用句型和常用短语 2.找3-5篇技术路线和统计方法与你的课题接近的文章,精读 3.针对论文的每一部分,尤其是某种具体方法、要讨论的某一具体方面,各找5-8 篇文献阅读,充…

英文不好的人如何阅读外文文献?

文章目录 0 前言1 工具2 查找文献3 阅读4 总结 0 前言 疫情在家,又要赶毕业设计。会遇到诸多烦恼。学校没有购买相应的数据库,买了也不能远程访问,怎么才能下载外文文献?英语不好,怎么才能读懂外文文献?不…

经典文献阅读之--OverlapNet

0. 简介 我们在之前的博客中讨论了一些激光回环检测的方法,但是基本都是围绕着点云特征去做的,并未涉足过深度学习的相关方法,之前作者在查找《经典文献阅读之–BoW3D》资料时看到了一个比较感兴趣的工作《OverlapNet: Loop Closing for LiD…

chatgpt赋能python:Python手把手教学:如何长截屏?

Python 手把手教学:如何长截屏? 导言 长截屏(full-page screenshot)是一种抓取整个网页、而不仅仅是可见区域的截屏。有时,你需要截取完整网页来记录信息、生成报告、分享内容或仅仅是作为计算机文件的样本。而 Pyth…

学计算机的女生后来都怎么样了?

上一篇:铁饭碗也不铁了 我估计有不少读者感兴趣,学计算机的女生都是怎么样的? 女程序员真的就如下面这张图形容的那样,没时间洗头、皮肤暗淡、黑眼圈吗?不尽然。 在我工作的9年里,我也接触过不少女开发。大…

chatgpt真好用——std::bind和std::function

chatgpt是一本正经的回答&#xff0c;有时候也是一本正经的胡说八道&#xff0c;不过挺有意思的。 下面回归正题&#xff0c;就是为何使用std::bind生成一个可调用的对象&#xff0c;叫做callable object。已经如何使用std::bind绑定类的成员函数。 #include <iostream>…

告别 ChatGPT:AI 工具与 ChatGPT 一样好(但很少有人使用它们)

在过去的几个月里&#xff0c;ChatGPT 获得了大量用户&#xff0c;因为它非常擅长编写电子邮件、博客、代码等等。但是&#xff0c;还有其他工具使用 ChatGPT 背后的模型来超越 ChatGPT 的功能。 在本文中&#xff0c;我将分享我认为比 ChatGPT 更好的工具列表&#xff0c;因为…

GPT来了,跑步迎接AI爆发的时代

你好&#xff0c;我是徐文浩&#xff0c;一个创办过一家AI聊天机器人公司的工程师。 有人说&#xff0c;编译原理、操作系统和图形学是程序员的三大浪漫。不过在整个计算机科学领域&#xff0c;还有一个超越这三者之外的存在&#xff0c;那就是人工智能。人工智能的诞生其实非…

ChatGPT将掀起新一轮革命?

年初&#xff0c;人工智能工具ChatGPT爆火&#xff0c;有关它的话题多次登上热搜&#xff0c;爆火程度已经压过已经火热两年之久的元宇宙。因此人工智能又再次成为科技圈的热门话题之一。风口转变之际&#xff0c;微软、谷歌、百度等科技巨头们迅速调转船头&#xff0c;冲向新的…

开始练说唱

快到饭点了, 今天上午看了看计算机的递归和简单的动态规划, 感觉良好, 不是很难, 做了几道题, 上楼梯, 走格子, 子集合并, 难度递增. 晚上再整理今天学习的内容, 现在没有代码就只能说说心得了. 递归就两种形式, 顶向下, 底向上, 但我觉得其实就一种形式, 底向上. 我觉得应该按…

说唱分析

参考介绍链接:说唱