equals()方法是根类Object中的一个方法,子类可以根据需要重写该方法(比如:String类)。
一、Object类中的equals()方法实现如下:
1 public boolean equals(Object obj) {
2 return (this == obj);
3 }
例子:
1 package com.mianshi.easy;
2
3 class A{}
4
5 public class Equals {
6
7 public static void main(String[] args) {
8 A a1 = new A();
9 A a2 = new A();
10 A a3 = a2;
11 System.out.println(a1.equals(a2));
12 System.out.println(a3.equals(a2));
13 }
14 }
15
16 结果:
17 false
18 true
类A默认继承自Object类,所以具有父类中的public修饰的的equals()方法,并且功能相同。
该方法实现的功能是比较两个对象是否是同一个对象,是同一个对象回true,否则,返回false。equals()比较的是obj存放的对象的地址值,这一点跟“==”一样。
二、String类的中的equals()方法实现如下:
1 public boolean equals(Object anObject) {
2 if (this == anObject) { //先比较两个对象是否为同一个对象
3 return true;
4 }
5 if (anObject instanceof String) {
6 String anotherString = (String)anObject;
7 int n = value.length;
8 if (n == anotherString.value.length) { //比较两个对象的值是否相同,值相同equals()返回true
9 char v1[] = value;
10 char v2[] = anotherString.value;
11 int i = 0;
12 while (n-- != 0) {
13 if (v1[i] != v2[i])
14 return false;
15 i++;
16 }
17 return true;
18 }
19 }
20 return false;
21 }
例子:
1 package com.mianshi.easy;
2
3 public class Equals {
4
5 public static void main(String[] args) {
6 String a1 = new String("Hello");
7 String a2 = new String("Hello");
8 String a3 = "Hello";
9 //a1和a2明显不是一个对象,但是equals()返回true
10 System.out.println(a1.equals(a2));
11 //a1和a3不是同一个对象,equals()返回true
12 System.out.println(a3.equals(a1));
13 }
14 }
15
16 结果:
17 true
18 true
说明String类里面重写了父类Object类的equals()方法,重写后比较的是两个String对象的内容是否相同,相同则为true。