Fork me on GitHub

在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,有以上结论。
posted @ 2021-12-01 16:17  秋刀鱼de滋味  阅读(448)  评论(0编辑  收藏  举报