1. 在Java中,为何摆列类型的比较推荐==而不是equals

光之使者  金牌会员 | 2024-6-23 11:32:12 | 来自手机 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 949|帖子 949|积分 2847

开源项目SDK:https://github.com/mingyang66/spring-parent
个人文档:https://mingyang66.github.io/raccoon-docs/#/


  • 比较运算符==和equals的区别
比较运算符==是比较两个对象在内存中的引用,equals方法是比较两个对象的值是否相等。


  • 摆列类型特点
摆列类型是一种特别的类类型,它包罗了一组固定的常量,每个摆列常量在JVM中都是唯一的,且摆列类型本身保证了这些常量的唯一性。
推荐使用==而不是equals方法的缘故起因重要有以下几点:

  • 性能:比较运算符==通常比调用equals方法更快,因为它直接在内存中比较两个引用的地点,而不需要执行方法调用和额外的比较逻辑。
  • 语义清晰:使用比较运算符==对于摆列值的比较在语义上更清晰,因为它直接表达了比较的是两个摆列常量是否相同。而equals方法可能被重写以用于更复杂的对象比较逻辑,这在摆列类型的上下文中可能不是必需的。
  • 避免意生手为:如果将来有人重写了摆列类型的equals方法,那么使用equals方法进行比较可能会引入意生手为。而使用则不会收到这种影响,因为比较的是引用而不是方法实现。


  • 示比方下:
  1. public enum Level {
  2.     ERROR(40, "ERROR"),
  3.     WARN(30, "WARN"),
  4.     INFO(20, "INFO"),
  5.     DEBUG(10, "DEBUG"),
  6.     TRACE(0, "TRACE");
  7. }
  8.    
  9. Level level = Level.INFO;
  10. if (Level.INFO.equals(level)) {
  11.     System.out.println("INFO");
  12. }
  13. if (Level.INFO == level) {
  14.     System.out.println("INFO");
  15. }
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

光之使者

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表