<center id='uejjdjd'></center>

        <pre id='uejjdjd'><q id='uejjdjd'><span id='uejjdjd'><thead id='uejjdjd'></thead></span></q></pre>

        <blockquote id='uejjdjd'></blockquote>
      1. <ul id='uejjdjd'><td id='uejjdjd'></td></ul>
        <tfoot id='uejjdjd'></tfoot>
        <center id='uejjdjd'></center>

        <acronym id='uejjdjd'><div id='uejjdjd'><i id='uejjdjd'><center id='uejjdjd'></center></i></div></acronym>

        让人疑惑的代码,竟成大多公司面试题热门!

        发布时间: 2017-07-28
        来自:网络
        小编今天给大家看的这个笔试题
        当年可是火遍大江南北
        不妨你先看看到底会不会
        这是关于一段令人疑惑的Java代码
        真题在此,谁敢不服

        你觉得简单,那执行一下
        真的能如你所愿?
        一个是true,一个是false!
        这是为什么呢?
        和大多数人心里想的不一样吧!
        心中是不是有一万个草泥马?
        不少不懂的就装B去百度了......
        这里给解释一下:
        根据Java编译机制,.java文件在编译以后会生成.class文件给JVM加载执行,于是找到.class文件,反编译看了一下,发现编译器在编译我们的代码时,很调皮(聪明的)的在我们声明的变量加上了valueOf方法,代码变成了如下:
        valueOf方法的实现原理
        我们发现,Integer的作者在写这个类时,为了避免重复创建对象,对Integer值做了缓存,如果这个值在缓存范围内,直接返回缓存好的对象,否则new一个新的对象返回,那究竟这个缓存到底缓存了哪些内容呢?看一下IntegerCache这个类:
        这是一个内部静态类,该类只能在Integer这个类的内部访问,这个类在初始化的时候,会去加载JVM的配置,如果有值,就用配置的值初始化缓存数组,否则就缓存-128到127之间的值。
        再来看看我们之前的代码:
        以下代码执行结果:
        看完这个,是不是明白了呢

        在微信公众号内回复数字“1”
        小编拉你进粉丝微信群
        不是在文章评论里回

        上一篇:上海牌手表、回力球鞋...这些品牌,原来副市长还在用
        下一篇:最后一页