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 false18 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()返回true10 System.out.println(a1.equals(a2));11 //a1和a3不是同一个对象,equals()返回true12 System.out.println(a3.equals(a1));13 }14 }15 16 结果:17 true18 true
说明String类里面重写了父类Object类的equals()方法,重写后比较的是两个String对象的内容是否相同,相同则为true。
- 1楼偏执的青椒
- 大二的时候学过的,很基础但是很不错,记录的不错,支持个