为什么"100==100"为true,而"1000==1000"为false?
- int是Java的基本数据类型,基本数据类型不存在引用,直接保存数值。双等号会比较int的值。所以用int声明两个1000是相等的。如果一边是int,一边是Integer,Integer会自动拆箱成int来比较,所以值为true。
- Integer是一个对象,双等号会比较对象的地址是否相同。
- 查看Integer源码
- 它在内部实际上是用了IntegerCache缓存了的-128 到 127 之间的所有的整数对象。如果声明变量的值在这个范围内,用的是同一个缓存对象,否则不是同一个,1000不在这个范围内,so,有以上结论。