equals()方法

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
View Code

类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
View Code

说明String类里面重写了父类Object类的equals()方法,重写后比较的是两个String对象的内容是否相同,相同则为true

posted @ 2015-07-21 10:54  管言  阅读(590)  评论(1编辑  收藏  举报