你以为简朴,那实行一下
真的能如你所愿?
一个是true,一个是false!
这是为什么呢?
和大多数民气里想的纷歧样吧!
这里给表明一下:
凭据JAVA编译器机制,.java文件在编译以后会天生.class文件给JVM加载实行,于是找到.class文件,反编译看了一下,发明编译器在编译我们的代码时,很淘气(智慧的)的在我们声明的变量加上了valueOf要领 ,代码酿成了如下:
valueOf要领的实现原理
我们发明,Integer的作者在写这个类时,为了制止重复创建工具,对Integer值做了缓存,要是这个值在缓存范畴内,直接返回缓存好的工具,不然new一个新的工具返回,那毕竟这个缓存到底缓存了哪些内容呢?看一下IntegerCache这个类:
这是一个内部静态类,该类只能在Integer这个类的内部访问,这个类在初始化的时间,会去加载JVM的设置装备部署,要是有值,就用设置装备部署的值初始化缓存数组,不然就缓存-128到127之间的值。再来看看我们之前的代码:
以下代码实行效果: