java 枚举类比较是用==还是equals?

原文地址https://blog.csdn.net/qq_27093465/article/details/70237349

一般在Java代码里面,涉及到比较2个值的问题,除了是简单的一般数据类型意外,字符串除外,我们都是使用==来判断是否相等的,但是对于字符串和对象以及封装类型的数据都是使用equals方法,来判断2个值是否相等。所以,当我看到别人的代码中,枚举类型变量,直接使用==,来判断是不是相等,很是诧异。然后就有了下面的调查和测试。

先看测试代码:

[java] view plain copy
  1. /** 
  2.  * 测试枚举比较,使用equal和== 
  3.  */  
  4. private static void testEnumEqual() {  
  5.     GameEnum s1 = GameEnum.BIG;  
  6.     GameEnum s2 = GameEnum.BIG;  
  7.     GameEnum ss1 = GameEnum.SMALL;  
  8.     System.out.println("s1 == s2:" + (s1 == s2));  
  9.     System.out.println("s1.equals(s2):" + (s1.equals(s2)));  
  10.   
  11.     System.out.println("s1 == ss1:" + (s1 == ss1));  
  12.     System.out.println("s1.equals(ss1):" + (s1.equals(ss1)));  
  13. }  
再看使用的枚举代码:

[java] view plain copy
  1. /** 
  2.  * Created by lxk on 2017/2/23 
  3.  */  
  4. public enum GameEnum{  
  5.     BIG,  
  6.     SMALL,  
  7.     FATTER  
  8. }  
最后是代码执行的结果图:

结果是:

可以看到,使用== 和使用equals方法的执行结果是一样的。

为什么呢?

可以看下图,因为在Enum类里面,已经重写了equals方法,而方法里面比较就是直接使用==,来比较2个对象的。所以,你在外边直接使用==也是可以的。


阅读更多
文章标签: Java enum 枚举
个人分类: Java面试
上一篇Java 枚举(enum) 详解7种常见的用法
下一篇Java类的各种成员初始化顺序如
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭