对于java中的equals的方法 主要用于比较,用于检测一个对象是否等于另外一个对象

 equals 方法属于Object 类    Object 类是最高级别的类

(Object 是 Java 类库中的一个特殊类,也是所有类的父类。 也就是说,Java 允许把任何类型的对象赋给 Object 类型的变量)

1.当用于String类比较时:

   当我们要比较字符串类型的内容时,我们不能用==来进行比较,应该用equals方法。

   代码如下:

public class A {
	public static void main(String[] args) {
		String a = "123";
	    String b = "123";
	    System.out.println(a.equals(b));
	}

}

代码运行结果是ture 

这是最常用的一种写法,可以在其他文章看一下equals的内置方法。

下面是String的equals写法

public boolean equals(Object anObject) {  
    //判断是否为同一个值,如X=X
    if (this == anObject) {  
        return true;  
    }  
    //判断是否为String对象
    if (anObject instanceof String) {  
        String anotherString = (String)anObject; 
        //此处value是String类中定义的当前调用此方法的String转换成的char数组 
        int n = value.length;  
        //判断调用String的char数组和比较String的char数组长度是否一致
        if (n == anotherString.count) {  
            char v1[] = value;  
            char v2[] = anotherString.value;  
            int i = offset;  
            int j = anotherString.offset;  
            //循环判断每个字符是否一致
            while (n– != 0) {  
                if (v1[i++] != v2[j++])  
                    return false;  
            }  
            return true;  
        }  
    }  
    return false;  
}

2. equals方法重写

如果我们这样写的话

class B{
	public String i;
	public B(String i) {
       this.i=i;		 
		
	}
}

public class A {
	public static void main(String[] args) {
		B b1 = new B("123");
	    B b2 = new B("123");
	    System.out.println(b1.equals(b2));
	}

}

他的结果是false

用java堆栈的解释就是 栈 b1 和b2在new一个对象的时候,他们的指向地址是在堆里是不同的, 所以 equals比较他们的地址就会显示false

这样我们必须重写一下equals

class B{
	public String i;
	public B(String i) {
       this.i=i;		 
		}
	public boolean equals(Object obj) {
		B b = (B)obj;//强制转换		
		return  this.i.equals(b.i);
		
	}
	
}

public class A {
	
	public static void main(String[] args) {
		B b1 = new B("123");
	    B b2 = new B("123");
	    System.out.println(b1.equals(b2));
	}
	

}

这样输出的就是true