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

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

作者: 巴黎圣母小院 | 来源:发表于2017-08-02 19:31 被阅读0次

给大家看的这个笔试题

当年可是火遍大江南北

不妨你先看看到底会不会

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

我们先看一段代码,很简单对不对

执行一下:


和大多数人心里想的不一样吧,好多人还在纠结,到底是全是true还是全是false呀。

然而一个是true,一个是false,这是为什么呢?

有的人根本不去思考,直接打开百度搜索去查找答案(一个个都是百度首席软件工程师)

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

看一下valueOf方法的实现

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

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

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

结论:我们在比较两个Integer对象时,无论是怎么声明的,都一定要使用equals去比较,不能用==。equals我在其它文章里已经做了详细解说,传

思考以下代码的执行结果:

1、具有1-5工作经验的,面对目前流行的技术不知从何下手,需要突破技术瓶颈的。

2、在公司待久了,过得很安逸,但跳槽时面试碰壁。需要在短时间内进修、跳槽拿高薪的。

3、如果没有工作经验,但基础非常扎实,对java工作机制,常用设计思想,常用java开发框架掌握熟练的。

4、觉得自己很牛B,一般需求都能搞定。但是所学的知识点没有系统化,很难在技术领域继续突破的可以加群。

5.阿里Java高级大牛直播讲解知识点,分享知识,上面五大专题都是各位老师多年工作经验的梳理和总结,带着大家全面、科学地建立自己的技术体系和技术认知!

相关文章

网友评论

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

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