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

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

转载于:https://my.oschina.net/u/3189920/blog/1502720

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值