為什么"100==100"為true,而"1000==1000"為false?
- int是Java的基本數據類型,基本數據類型不存在引用,直接保存數值。雙等號會比較int的值。所以用int聲明兩個1000是相等的。如果一邊是int,一邊是Integer,Integer會自動拆箱成int來比較,所以值為true。
- Integer是一個對象,雙等號會比較對象的地址是否相同。
- 查看Integer源碼
- 它在內部實際上是用了IntegerCache緩存了的-128 到 127 之間的所有的整數對象。如果聲明變量的值在這個范圍內,用的是同一個緩存對象,否則不是同一個,1000不在這個范圍內,so,有以上結論。