A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 任江峰 于 2013-5-9 21:00 编辑

Object类、String类的equals()方法比较的是什么?

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

7 个回复

倒序浏览
Object类的equals方法的本质其实是和“==”一样的,都是比较两个对象引用是否指向同一个对象(即两个对象是否为同一对象)。String类继承Object类后,也继承了equals方法,但String类对equals方法进行了重写,改变了equals方法的比较形式,equals判断的是值是否一样,“==”比较的是空间地址。

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
你好   String类的equals()方法比较的是两个字符串的内容是否完全相等。。这个api里有记载的   它复写了equals()方法。。
而object类的equals()比较的就是两个对象的地址值了    这个可以通过在代码中试验得出结果。。   

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
String 类 equal()方法表示比较两个字符串的内容如果内容一样返回true,
Object类 equals()方法则是用 == 表示要引用的是同一个字符串时才返回true
String 类继承Object类,并复写了equal()方法;在String类中,用==也可判断;两个String对象的引用是否相同

评分

参与人数 1技术分 +1 收起 理由
HM汪磊 + 1

查看全部评分

回复 使用道具 举报
  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 = count;
  8.             if (n == anotherString.count) {
  9.                 char v1[] = value;
  10.                 char v2[] = anotherString.value;
  11.                 int i = offset;
  12.                 int j = anotherString.offset;
  13.                 while (n-- != 0) {
  14.                     if (v1[i++] != v2[j++])
  15.                         return false;
  16.                 }
  17.                 return true;
  18.             }
  19.         }
  20.         return false;
  21.     }
复制代码
这个是String类的equals方法的源代码;
回复 使用道具 举报
Object类中equals方法格式:public boolean equals(Object obj) {};
只有当obj和this指向同一存储空间时,equals才会返回true;两个对象的值相同,存储空间不同,equals依然返回false;
String类重写了Object类中的equals方法;
在Object类中,两个新建对象若不在同一存储空间,equals返回false,即比较的是对象的地址,在String类中,equals方法已被重写,
比较的是指针所指向对象的内容;
回复 使用道具 举报
  1. public boolean equals(Object obj) {
  2.         return (this == obj);
  3.     }
复制代码
这是Object类的equals方法
现在应该了解了吧。。。
回复 使用道具 举报
建议在取看看String类的compareTo方法。。。
一句话,String的equals方法是按照各个字符的ascii码值进行比较的,也就是字符串的自然顺序;
ascii码值大的就大
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马