==和equal()的区别

2017/03/31

”==”的作用

基本数据类型比较的是值是否相等
引用数据类型比较的是地址是否相同(是否为同一对象)

equals()的作用

equals的方法是Object类中定义的,源码如下:

  public boolean equals(Object obj) {
      return (this == obj);
  }

由源码可知,该方法比较的是两个对象的地址是否相同,和”==”作用相同 但是在有些类中这个equals()方法被重写了,如:String、Integer、Date

String类中的equals()方法源码如下:

  public boolean equals(Object anObject) {
      if (this == anObject) {
          return true;
      }
      if (anObject instanceof String) {
          String anotherString = (String)anObject;
          int n = value.length;
          if (n == anotherString.value.length) {
              char v1[] = value;
              char v2[] = anotherString.value;
              int i = 0;
              while (n-- != 0) {
                  if (v1[i] != v2[i])
                      return false;
                  i++;
              }
              return true;
          }
      }
      return false;
  }

总结

  1. 如果类中没有重写equals()方法,使用 “==”或 equals() 等效
  2. 重写了equals()方法,如String类则是用于判断字符串是否相同
    在实际使用中要注意该类是否重写equals()方法

Post Directory