在Java中,为什么"100==100"为true,而"1000==1000"为false?


为什么"100==100"为true,而"1000==1000"为false?


  • int是Java的基本数据类型,基本数据类型不存在引用,直接保存数值。双等号会比较int的值。所以用int声明两个1000是相等的。如果一边是int,一边是Integer,Integer会自动拆箱成int来比较,所以值为true。


  • Integer是一个对象,双等号会比较对象的地址是否相同。
  • 查看Integer源码

  • 它在内部实际上是用了IntegerCache缓存了的-128 到 127 之间的所有的整数对象。如果声明变量的值在这个范围内,用的是同一个缓存对象,否则不是同一个,1000不在这个范围内,so,有以上结论。


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM