美文网首页Java学习Java学习笔记
让人疑惑的Java代码,竟成大多公司面试题热门

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

作者: 幂幂姐的小迷弟 | 来源:发表于2017-06-29 21:04 被阅读22次

    今天给大家看一个以前很火的笔试题,关于一段令人疑惑的Java代码

    下面我们来看一下Java代码

    执行一下:会是什么呢

    看不清,点击查看大图

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

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

    小编这里给解释一下,

    Java学习交流群,欢迎喜欢Java的各位大神小神前来学习交流,每天晚上群里面也会有大佬直播企业项目开发学习,更有各种项目案例供你自己学习哦,632119504

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

    valueOf方法的实现原理

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

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

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

    以下代码执行结果

    各位程序员可以多去知乎看看,里面有些Java程序员还是很有趣的

    本文转自知乎,希望能帮助更多的人理解Java的常量池和缓存机制

    网页链接:https://zhuanlan.zhihu.com/p/27562748

    相关文章

      网友评论

        本文标题:让人疑惑的Java代码,竟成大多公司面试题热门

        本文链接:https://www.haomeiwen.com/subject/blpvcxtx.html