黑马程序员技术交流社区
标题:
Object类、String类的equals()方法比较的是什么?
[打印本页]
作者:
任江峰
时间:
2013-5-9 15:36
标题:
Object类、String类的equals()方法比较的是什么?
本帖最后由 任江峰 于 2013-5-9 21:00 编辑
Object类、String类的equals()方法比较的是什么?
作者:
金辉
时间:
2013-5-9 15:50
Object类的equals方法的本质其实是和“==”一样的,都是比较两个对象引用是否指向同一个对象(即两个对象是否为同一对象)。String类继承Object类后,也继承了equals方法,但String类对equals方法进行了重写,改变了equals方法的比较形式,equals判断的是值是否一样,“==”比较的是空间地址。
作者:
黑马-雷钊
时间:
2013-5-9 19:24
你好 String类的equals()方法比较的是两个字符串的内容是否完全相等。。这个api里有记载的 它复写了equals()方法。。
而object类的equals()比较的就是两个对象的地址值了 这个可以通过在代码中试验得出结果。。
作者:
付银攀
时间:
2013-5-9 20:25
String 类 equal()方法表示比较两个字符串的内容如果内容一样返回true,
Object类 equals()方法则是用 == 表示要引用的是同一个字符串时才返回true
String 类继承Object类,并复写了equal()方法;在String类中,用==也可判断;两个String对象的引用是否相同
作者:
Miss小强
时间:
2013-5-9 20:43
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = count;
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;
}
复制代码
这个是String类的equals方法的源代码;
作者:
蚂蚁搬家
时间:
2013-5-9 20:44
Object类中equals方法格式:public boolean equals(Object obj) {};
只有当obj和this指向同一存储空间时,equals才会返回true;两个对象的值相同,存储空间不同,equals依然返回false;
String类重写了Object类中的equals方法;
在Object类中,两个新建对象若不在同一存储空间,equals返回false,即比较的是对象的地址,在String类中,equals方法已被重写,
比较的是指针所指向对象的内容;
作者:
Miss小强
时间:
2013-5-9 20:45
public boolean equals(Object obj) {
return (this == obj);
}
复制代码
这是Object类的equals方法
现在应该了解了吧。。。
作者:
Miss小强
时间:
2013-5-9 20:50
建议在取看看String类的compareTo方法。。。
一句话,String的equals方法是按照各个字符的ascii码值进行比较的,也就是字符串的自然顺序;
ascii码值大的就大
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2