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

源码如下:
/**
*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<=IntegerCache.high)
returnIntegerCache.cache[i+(-IntegerCache.low)];
returnnewInteger(i);
}
inti=Integer.valueOf(-120);
System.out.println(i);//i=-120
海绵宝宝撒
浏览 667回答 2
2回答

慕标琳琳

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

繁星淼淼

调用IntegervalueOf返回Integer对象,再调用Integer.intValue()方法得到value=-120.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript