令人震惊:为什么在Java中1 == 1是🟢 true,而128 == 128是🔴 false?

💡 原文英文,约300词,阅读约需1分钟。
📝

内容提要

在Java中,==用于比较引用,.equals()用于比较值。-128到127范围内的Integer对象会被缓存,因此==比较返回true。超出此范围会创建新对象,==返回false。比较Integer值应使用.equals()。

🎯

关键要点

  • 在Java中,==用于比较引用,.equals()用于比较值。
  • Java缓存-128到127范围内的Integer对象,因此在此范围内使用==比较返回true。
  • 超出缓存范围(如128及以上)时,会创建新的Integer对象,导致==比较返回false。
  • 比较Integer值时应使用.equals()而不是==。
  • 总结:1 == 1返回true,因为两个对象指向相同的缓存引用。
  • 128 == 128返回false,因为Java为超出缓存范围的值创建了不同的对象。
  • 在比较非基本类型(如Integer)时,始终使用.equals()。
🏷️

标签

➡️

继续阅读