拆装箱笔试知识点

     上图来自《Algorithms4》上的知识点,当弄明白1,3段代码为啥输出true/false时,笔试这个知识点就掌握了,第一段代码输出true,第三段输出false。是因为Java存在一个检索缓存的机制,当一个Integer对象的值在[-128,127]之间时,自动装箱另一个相同值的Integer对象时不会新建对象,而是使装箱变量指向已存在的Integer对象。超过该范围,则会新建立一个Integer对象。为此第一段运行结果为true,第三段代码运行结果为false。obviously,这样做的好处就是利用缓存机制节省内存空间,因为通常[-128,127]区间内的Integer对象引用是programmer最常用的。

     顺带解释一下,为何存在拆装箱的机制。因为某些类或者类中的实例函数需要传递的参数只能为对象,而基础数据类型如整数int不是一个对象,不能直接传递到函数作为实参,为此java为每一个基础数据类型设计了对应的对象引用类型,通过自动拆装箱来完成基础数据类型和对象引用类型的自动转换,很人性化。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值