因为一个小小的Integer问题导致阿里一面没过,遗憾!

面试题: new Integer(112)和Integer.valueOf(112)的区别

面试官考察点猜想

这道题,考察的是对Integer这个对象原理的理解,关于这道题的变体有很多,我们会一一进行分析。

理解这道题,对于实际开发过程中防止出现意想不到的Bug很有用,建议大家认真思考和解读。

背景知识详解

关于Integer的实现

Integer是int的一个封装类,它的构造实现如下。

ab24bb680691ff54b4c1fecedcaae2e4.png

94c6b6ebc410b70c479d6bacc576eaf3.png

8cdc3fcd3b7e6a15fa5fbfbfaaaba428.png

3049121d0d0caeea86eae1acf107d90b.png

1c12db86b9acd3de6c6dcebfa73f42f4.png

bd3b4438c9b1bb0d1ace1faf9edfad25.png

bc42f39a767c34e40975435bd4381255.png

f0940e902aa8503f234b6dbb9e1cabfc.png

954b918543c285c9599b5d38809cb22d.png

5d7485caf8ef575fe6a45dd93150be72.png

a0d493fe189fbda636a73f048d8ce1c9.png

5fa073738771f5f9c9addc2b9b785288.png

理解了原理后,我们只需要修改Integer temp=a这段代码,改成下面这种写法。保证temp变量是一个独立的实例。

Integer temp=new Integer(a);

修改以后运行结果如下

交换前:a=1,b=2
交换后:a=2,b=1
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值