为了账号安全,请及时绑定邮箱和手机立即绑定

今天看了一下integer源码,为什么integer.valueOf(-120)结果还是-120呢?

今天看了一下integer源码,为什么integer.valueOf(-120)结果还是-120呢?

海绵宝宝撒 2019-05-22 22:01:35
源码如下:/***Returnsan{@codeInteger}instancerepresentingthespecified*{@codeint}value.Ifanew{@codeInteger}instanceisnot*required,thismethodshouldgenerallybeusedinpreferenceto*theconstructor{@link#Integer(int)},asthismethodislikely*toyieldsignificantlybetterspaceandtimeperformanceby*cachingfrequentlyrequestedvalues.**Thismethodwillalwayscachevaluesintherange-128to127,*inclusive,andmaycacheothervaluesoutsideofthisrange.**@paramian{@codeint}value.*@returnan{@codeInteger}instancerepresenting{@codei}.*@since1.5*/publicstaticIntegervalueOf(inti){if(i>=IntegerCache.low&&i
查看完整描述

2 回答

?
慕标琳琳

TA贡献1830条经验 获得超9个赞

我理解你其实是想问,为什么i+(-IntegerCache.low)还返回i是么?如果是的话,IntegerCache这个数组缓存了-128~127这些数,分别放到了数组下标为0~255的位置,所以i要+(-IntegerCache.low),也就是将下标+128。
                            
查看完整回答
反对 回复 2019-05-22
?
繁星淼淼

TA贡献1775条经验 获得超11个赞

调用IntegervalueOf返回Integer对象,再调用Integer.intValue()方法得到value=-120.
                            
查看完整回答
反对 回复 2019-05-22
  • 2 回答
  • 0 关注
  • 666 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信