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

couchbase_使用Couchbase分页

couchbase如果在对Couchbase集群进行查询时必须处理大量文档,则使用分页来逐页获取行很重要。 您可以在“ 分页 ”一章的文档中找到一些信息,但是我想在本文中详细介绍示例代码。 在此示例中,我将基于啤酒样本数据集创建一个简单的视图&…

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

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

php提前用户系统时间限制,php date()比服务器时间提前一小时(DST问题)

我正在尝试排除故障并解决此问题:我正在使用的服务器(Linux上的PHP5.2.9)具有正确的本地时间(美洲/布宜诺斯艾利斯):userserver [/home/site/public_html]$ dateMon Nov 1 17:11:14 ART 2010php.ini设置为date.timezone "America/Buenos_Aires"ini_set(display_erro…

单缝衍射matlab,MATLAB模拟光的单缝衍射

我使用32位R2012a版,32位windows 7系统模拟此程序时第一句出现错误,不知道是什么原因。第一次学习使用MATLAB,希望老师们能帮助,谢谢您们。function Varargoutmygui_1002(varargin)gui_Singleton1;gui_Statestruct(gui Name, mf…

认识适配器:JSON绑定概述系列

适配器通过实现JsonbAdapter接口来配置自定义对象的创建和序列化。 方法AdaptToJson()和AdaptFromJson()被执行序列化和反序列化操作的逻辑覆盖。 下一篇文章介绍了使用自定义序列化器和反序列化器自定义JSON-B的最高级方法。 在…

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

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

centos mount 用法_linux screen的用法 - mouseleo

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

php memcache 封装类,php 封装memcache类

/** memcache类*/class Memcacheds{//声明静态成员变量private static $m null;private static $cache null;private function __construct() {self::$m new Memcache();self::$m->connect(www.cat.com,11211); //写入缓存地址,端口}//为当前类创建对象private static fu…

jedis入门_Jedis入门

jedis入门嗨,这些天我开始研究Redis。 我听说过很多,所以我决定尝试一下。 Redis在其网站上定义为“ 开源高级键值存储”。 它通常被称为数据结构服务器,因为键可以包含字符串,哈希,列表,集合和排序集合 。…

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

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

php赋值 jq,使用js和jQuery如何实现指定赋值方法

下面我就为大家分享一篇js和jQuery以及easyui实现对下拉框的指定赋值方法,具有很好的参考价值,希望对大家有所帮助。js实现:1. 通过让第i个option为selected实现选中第i个,代码如下:(id为下拉框id)(1) document.getEle…

混合云的承诺,收益和产品

云承诺将为我们提供所有灵活性。 有机会在需要时访问无限资源并相应地付款。 我们将不再需要花费时间安装,配置和维护服务器。 我们被承诺将有更多的时间来“仅仅编码”。 取而代之的是,我们越来越多地锁定供应商,而少数云服务商如此之大&am…

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、…

javascript里用php,php中使用javascript - 程序园

方法一: 先用PHP生成js代码,然后通过浏览器的自动刷新,将javascript变量传递到PHP脚本中。注意:在实际应用中要防止用户在地址栏内更改传递的变量值。if($qq) echo $qq.;else echo "";echo $qq;?>方法二:先用docume…

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

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

php53 php55区别,详解 PHP 中的三大经典模式

原文:https://www.cnblogs.com/heyue0117/p/11869676.html单例模式单例模式的含义:作为对象的创建模式,单例模式确保某一个类只有一个实例,而且自行实例化并向整个系统全局地提供这个实例。它不会创建实例副本,而是会向单例类内部…

javafx中的tree_JavaFX中的塔防(3)

javafx中的tree在最后一部分中,您了解了如何创建Sprite,为其设置动画并赋予其Behavior。 但是动画效果不是很好,因为作为Insectoid,您应该总是在飞行的地方看。 记住:安全第一! 我们可以通过创建自定义的Ti…

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

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