16
回答
让人疑惑的Java代码,竟成大多公司面试题热门
终于搞明白,存储TCO原来是这样算的>>>   

小编今天给大家看的这个笔试题

当年可是火遍大江南北

不妨你先看看到底会不会

这是关于一段令人疑惑的Java代码

下面我们来看一下Java代码

执行一下:会是什么呢

一个是true,一个是false,这是为什么呢?和大多数人心里想的不一样吧

这里就难倒不少人,不少不懂的就装B的去百度了

小编这里给解释一下,

根据Java编译机制,.java文件在编译以后会生成.class文件给JVM加载执行,于是找到.class文件,反编译看了一下,发现编译器在编译我们的代码时,很调皮(聪明的)的在我们声明的变量加上了valueOf方法 ,代码变成了如下:

valueOf方法的实现原理

我们发现,Integer的作者在写这个类时,为了避免重复创建对象,对Integer值做了缓存,如果这个值在缓存范围内,直接返回缓存好的对象,否则new一个新的对象返回,那究竟这个缓存到底缓存了哪些内容呢?看一下IntegerCache这个类:

这是一个内部静态类,该类只能在Integer这个类的内部访问,这个类在初始化的时候,会去加载JVM的配置,如果有值,就用配置的值初始化缓存数组,否则就缓存-128到127之间的值。

再来看看我们之前的代码:

以下代码执行结果

看完这个,是不是明白了呢

想知道更多?

下面送上粉丝福利!

特邀企业技术总监

免费在线直播分享2017Java最前沿技术

不管你是新手,还是入行工作几年老手

在这里都能学到你所需要的

直播时间

2017.7.11 - 2017.7.19

每晚20:00 - 22:00

参与报名方式

长按下方二维码

或直接搜索QQ群:129479831 

举报
OSC_Lucy
发帖于2个月前 16回/4K+阅
顶部