java 中Long和Integer不得不知道的秘密

来源:互联网 发布:服务器网络配置自考 编辑:程序博客网 时间:2024/06/05 04:28

java程序猿对Long和Integer不可谓不熟,但它们的有些秘密估计好多人都是不知道的,我们先从一个例子开始

上面例子的运行结果正如代码注释,是不是有(xiao)点(xiao)惊(zi)呆(lian)了(xia),最后一个结果应该大家都能接受,前面看着是不是有点意料之外的意思,这就是今天我要告诉大家的小秘密。

上面这个问题是由于jdk 中Long缓存了-128~127之间的值,不多说了,上源码:

以上代码都是jdk源码,从源码中我们可以看到-128~127之间的数是被缓存在数组中的,所以每次取这个区间的数时返回的是同一个对象,不在这个区间的数每次获取时返回的都是一个新对象,所以上面的结果就能理解了吧。还有一点需要解释下Long a = 12L和Long a = Long.valueOf(12)是等价的。

如果在Integer中遇到类似问题,同上解。


以上小小点心供各位客官品尝,不到之处望不吝赐教!

0 0