自动装箱自动拆箱java,自动装箱?拆箱?==问题?详解java面试常见的一个问题...

1:前言

相信大家都在面试中都被问到过一个问题,这个问题也是近年来面试官刁难人比较常见的一个问题,所以也被大家所熟知了,本质上也很简单,但是也是非常基础的一个题目。

Integer a = 100;

Integer b = 100;

System.out.println(a == b);

Integer a = 180;

Integer b = 180;

System.out.println(a == b);

复制代码

题目也就是让你回答一下上面的输出情况,显而易见第一个是true,第二个是false,这个大家应该都知道了

2:自动装箱和拆箱

我们都知道!java的核心思想是:万物皆对象,但是,实际上为了平时写代码的便利性,还是保留了8个基础数据类型:byte, short, char, int, long, float, double 和 boolean

那么问题来了:下面这种情况怎么操作

//a是Integer对象类型,100是基础int类型

Integer a = 100;

复制代码

这个时候我们聪明的编译器就会调用valueOf去做装箱为对象

c1f2563ae2f61235e0950cf8182d0194.png

自动拆箱就正好反过来使用对象的intValue()方法区拆箱为基础数据类型

b3bb05cef8db16e242745b400a962ad7.png

3:解答上面的 == 不一样的问题

那么我们在温故一下上面那个问题好了,额外我再加一个干扰项

Integer a = 100;

Integer b = 100;

System.out.println(a == b); // -> true

Integer a = 180;

Integer b = 180;

System.out.println(a == b); // -> false

Integer a = new Integer(100);

Integer b = new Integer(100);

System.out.println(a == b); // -> false

复制代码

所以我们要先理解==的意思,基础类型==是比较值是否相等,对象类型是比较内存地址是否相同

那么我们结合Integer.valueOf()代码就可以知道,我们在装箱的时候会进行一次缓存判断,在[-128,127]范围内的时候,会取一个缓存对象,所以 a和b对象是同一个当然是true,第二个180超出范围了,就会new一个新的Integer对象,内存地址肯定不一样

那么最后一题,new Integer(100)实际上是直接自己new了对象,没有用到装箱,不过我想一般也没人这么用吧···

4:总结

其实java中很多设计的小细节,小问题都包含了设计者们的智慧和心血,我们在看这些面试小问题的时候,应该仔细琢磨琢磨为什么这么设计,然后自己在实际的工作中也可以去运用这些巧妙的设计和知识!!

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

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

相关文章

javafx 加载_JavaFX 2:如何加载图像

javafx 加载这是有关如何在JavaFX 2应用程序中加载图像的JavaFX教程。 使用ImageView可以轻松完成此操作。 ImageView是一个节点,用于绘制加载有Image类的图像。 因此,您将首先使用Image类加载图像,然后使用ImageView显示它。 我还将在这里演…

Juniper 210 密码清不掉_工程人不会看图纸?210页建筑识图详细教程,把你教得明明白白...

工程人不会看图纸?210页高清建筑识图详细教程,把你教得明明白白身为工程人,看不懂图纸有多可怕?可以说,举步维艰,寸步难行!将复杂的图纸最简单化,这是我们工程人学会建筑识图的目的和…

Network下方什么请求也没有_今日头条上传图片时设置封面图报像素低的原因是什么...

今日头条发表原创图文时,在设置文章封面三张图时,有时候会遇到错误信息“部分图片实际像素低于172*120, 不支持设置为封面”。然而我上传的每张图片都是大小超过4MB的高清晰图片,怎么可能像素低于172 * 120? 因为我是个程序猿,所…

微软新浏览器_要超越Chrome?微软新发布的这款浏览器,有翻天覆地的变化!

可爱的分割线系统迷还记得,当年Edge浏览器刚发布的时候,真的是备受期待。可惜的是,由于其糟糕的体验,以及不完善的插件,最终让它变成了第二个IE。可能是出于无奈,微软选择放弃自家渲染引擎,改用…

centos mount 用法_linux screen的用法 - mouseleo

12016.04.02 17:34:56字数 1,019阅读 26,104大家在初次接触linuxVPS时,会发现linux操作和windows操作太不相同的,windows都是图形操作界面,而linux一般是命令行操作,当然,linux也有图形操作界面,但是我们在…

电脑动态壁纸_每日壁纸—水彩插画少女动漫手机高清无水印壁纸第二波

- End -猜你喜欢:看新闻竟然可以赚钱???朋友圈千万别设置三天可见!哈哈哈~圣诞节,你收到过的奇葩礼物是什么?教你玩赚支付宝红包攻略,如何领大额红包!!&#…

c语言汉字属于什么类型_狠准!你的名字属于什么类型 就是什么性格

1.用简体中文写出自己的名字(不包括姓氏),再写出每个字的笔画。2.算出字的总笔画,然后对照下面的表找出对应的。 如:杰伦 8划6划14划阳型(1、10、19、28、37、46、55、64)水型(2、11、20、29、38、47、56、65)空型(3、12、21、30、39、48、57、66)木型(4、13、22、31、40、49、…

java架构师_成为一名Java高级架构师究竟要学哪些东西??

Java架构师,应该算是一些Java程序员们的一个职业目标了吧。很多码农码了五六年的代码也没能成为架构师。那成为Java架构师要掌握哪些技术呢,总体来说呢,有两方面,一个是基础技术,另一个就是组织能力和提出解决方案能力…

ie浏览器升级_IE 被微软专家从浏览器里除名了,专家说它只是个兼容性解决方案...

随着 Chrome 等第三方浏览器的崛起,以及微软 Edge 浏览器的替代,家喻户晓的 IE 浏览器正在走向边缘化。2016 年,IE 浏览器的市场份额下跌了 55%。随之而来着来的还有用户的种种恶搞,IE 的反应慢、易崩溃都成了读者制图时讽刺的目标…

dos命令行设置网络优先级_替代windows系统下cmd的10款命令行工具

喜欢用linux系统的或者从事开发编程的朋友可能会经常用到命令行工具,下面会整理一些windows下命令行工具。1.powershell系统自带powershell它可以说cmd的升级版、补充版,PowerShell需要.NET环境的支持,借助.NET Framework平台强大的类库&…

Spring Cloud Gateway –配置简单路由

可以将Spring Cloud Gateway视为Spring Cloud Netflix Zuul项目的后续产品,并有助于在微服务环境中实现Gateway模式 。 它建立在 Spring Boot 2和Spring Webflux端到端都是无阻塞的-它公开了一个基于Netty的服务器,使用基于Netty的客户端进行下游微服务…

win7台式电脑怎么连wifi_台式电脑怎么用wifi网络

现在很多朋友的手机使用的都是wif网络,既然手机可以用wifi,那么电脑怎么用wifi呢,其实电脑用wifi的方法也有很多种,为了大家通俗易懂,先来说一种简单的方法吧!台式电脑怎么用wifi网络1、首先必须要有一个无…

分子动力学模拟软件_功能玻璃专题——分子动力学模拟预测氧化钠含量对二元钠硅酸盐玻璃弹性模量的影响...

赵 谦 1,祖 群 1,齐 亮 2,胡永杰 2,孙雪坤3,陈 阳 1(1. 中材科技股份有限公司,中国南京 210012;2. 美国密歇根大学,美国密歇根州安娜堡 48109-236; 3. 美国大陆地科技…

javafx中的tree_JavaFX中的塔防(2)

javafx中的tree在最后一部分,我们创建了一个简单的编辑器,让我们放置炮塔。 现在,我们将在敌人起源处添加一个生成点,并为其定义攻击目标。 首先,我将通过对象层向地图添加更多信息。 这是标准的TMX,因此我…

fanuc机器人与视觉通信_要说工厂干起活来:工业机器人和数控机床才是真正的一对!...

我们常说团结就是力量,只有相互配合,才能把工作做得更加完美。这不仅仅适用于人类。工业机器人和数控机床也是一样的,也是需要相互配合才能做好工作,提高工厂的生产效率。所以今天要学习的是工业机器人和数控机床是怎么配合工作的…

在Microsoft Azure上运行Eclipse MicroProfile

在本文中,我将通过展示如何在Microsoft Azure Web Apps for Containers中执行操作来跟踪有关在Oracle Cloud中运行Eclipse MicroProfile应用程序的系列文章。 我正在使用与以前的帖子相同的简单应用程序CloudEE Duke 。 唯一的区别是,我现在将应用程序打…

php ajax 更改状态,phpajax实现无刷新获取天气状态_PHP教程

首先我们要明白一点我们自己是无法来做天气预报这种功能的,这里我们只要调用api接口返回的数据就可以了,下面是以中国天气网的api接口调用实例我们一起来学习。天气已经成为生活中不可缺少的话题,与我们的生活有着密切的关系,我博…

注入dll到explorer.exe中无反应_MBR膜生物反应器的安装及技术要求都有什么呢?

MBR膜生物反应器在安装的时候,其中是有着事项值得我们注意的,那么MBR膜生物反应器的安装及技术要求主要是什么呢?下面一起来了解下吧。1.MBR膜生物反应器管道安装连接应该在设备就位时考虑好,罐体就位时必须按设备自重&#xff0c…

什么是互联网大厂_2020阿里、腾讯、字节跳动等14家互联网大厂薪资水平大汇总...

联网大厂已经成为求职者的“必争之地”。无论是从薪资待遇、发展机会,还是从平台资源、技术实力来看,互联网大厂都是不错的选择。当然,不同的企业薪资水平还是存在一定的差距,对应的要求也会有所不同。今天,我们再来看…

解神者php奥义高阶,《解神者》角色月曦九攻略技能解析和兽主推荐

解神者已经有一段时间了,很多新玩家对角色还不太了解,今天就给新手玩家解析一下月曦九角色的技能攻略和兽主推荐。月曦九也是解神者所有角色里伤害很高的角色之一。月曦九的神权一技能,此技能共有两段伤害,在第一段位移和伤害释放…