object类的equals方法简介 & String类重写equals方法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了object类的equals方法简介 & String类重写equals方法相关的知识,希望对你有一定的参考价值。

object类中equals方法源码如下所示

1 public boolean equals(Object obj)  
2 {  
3     return this == obj;  
4 }  

Object中的equals方法是直接判断this和obj本身的值是否相等,即用来判断调用equals的对象和形参obj所引用的对象是否是同一对象,所谓同一对象就是指内存中同一块存储单元,如果this和obj指向的hi同一块内存对

象,则返回true,如果this和obj指向的不是同一块内存,则返回false,注意:即便是内容完全相等的两块不同的内存对象,也返回false。

如果是同一块内存,则object中的equals方法返回true,如果是不同的内存,则返回false。

如果希望不同内存但相同内容的两个对象equals时返回true,则我们需要重写父类的equal方法

【以上内容转载自】http://blog.csdn.net/rain722/article/details/52425285

String类重写object中的equals方法

 1  /**
 2      * Compares this string to the specified object.  The result is {@code
 3      * true} if and only if the argument is not {@code null} and is a {@code
 4      * String} object that represents the same sequence of characters as this
 5      * object.
 6      *
 7      * @param  anObject
 8      *         The object to compare this {@code String} against
 9      *
10      * @return  {@code true} if the given object represents a {@code String}
11      *          equivalent to this string, {@code false} otherwise
12      *
13      * @see  #compareTo(String)
14      * @see  #equalsIgnoreCase(String)
15      */
16     public boolean equals(Object anObject) {
17         if (this == anObject) {
18             return true;
19         }
20         if (anObject instanceof String) {
21             String anotherString = (String)anObject;
22             int n = value.length;
23             if (n == anotherString.value.length) {
24                 char v1[] = value;
25                 char v2[] = anotherString.value;
26                 int i = 0;
27                 while (n-- != 0) {
28                     if (v1[i] != v2[i])
29                         return false;
30                     i++;
31                 }
32                 return true;
33             }
34         }
35         return false;
36     }

判断条件:

如果两个对象具有相同的引用,则返回true,也就是Object类中的方法

如果传入的对象不属于String类,则返回false

如果传入的对象属于String类,则和原对象的长度进行比较,长度不相等则返回false,如果相等,则逐位比较它们的内容是否相同,都相同则返回true,否则返回false

注意:这个方法没有判断过两个对象均为null的情况,也就是说:

1  public static void main(String args[]){
2         String a = null;
3         String b = null;
4         System.out.println(a.equals(b));
5     }

运行这段代码,会出现空指针异常,不允许调用equals方法的对象(这里是a)为null

技术分享图片

 

以上是关于object类的equals方法简介 & String类重写equals方法的主要内容,如果未能解决你的问题,请参考以下文章

Java Object类的equals()方法

Object类的equals方法 常用API

Java:Object类的equals()方法 如何编写一个完美的equals()方法

Object类及其常用方法简介

第1章 Object类 & System类

#yyds干货盘点#equals方法通用约定