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

2017-07-31

1.jpg

  你以为简朴,那实行一下

  真的能如你所愿?

2.png

  一个是true,一个是false!

  这是为什么呢?

  和大多数民气里想的纷歧样吧!


  这里给表明一下:

  凭据Java编译机制,.java文件在编译以后会天生.class文件给JVM加载实行,于是找到.class文件,反编译看了一下,发明编译器在编译我们的代码时,很淘气(智慧的)的在我们声明的变量加上了valueOf要领 ,代码酿成了如下:

3.jpg

  valueOf要领的实现原理

4.jpg

  我们发明,Integer的作者在写这个类时,为了制止重复创建工具,对Integer值做了缓存,要是这个值在缓存范畴内,直接返回缓存好的工具,不然new一个新的工具返回,那毕竟这个缓存到底缓存了哪些内容呢?看一下IntegerCache这个类:

5.jpg

  这是一个内部静态类,该类只能在Integer这个类的内部访问,这个类在初始化的时间,会去加载JVM的设置装备部署,要是有值,就用设置装备部署的值初始化缓存数组,不然就缓存-128到127之间的值。再来看看我们之前的代码:

6.jpg

  以下代码实行效果:

7.png

上一篇:优秀的程序员10分钟内能搞定下面5个编程问题,你能做到吗?

下一篇:办理“95后”,牢记这5点