先看一段程序的运行结果
现象
- 当
a=127
b=127
时,二者==
为true
- 当
c=128
d=128
时,二者==
为false
。
先说结论
- 当
int
数值范围为-128 ~ 127
时,会被封装为IntegerCache
类型 - 当
int
数值范围在-128 ~ 127
之外时,会被封装为Integer
类型
解释:
[scode type="share"]Java的自动封装机制[/scode]
int
类型赋值给Integer
类型的变量,内部会自动执行Integer.valueOf()
,从而把int
转换成Integer
,查看其源码就可以得出上述结论。
附源码:
- - - 结束 - - -