黑马程序员技术交流社区

标题: 求教!!!深究equals [打印本页]

作者: 王章亚    时间: 2012-6-14 14:46
标题: 求教!!!深究equals
本帖最后由 王章亚 于 2012-6-14 15:02 编辑

我对==和equals的区别也能分的清楚了可是今天看了源码之后又糊涂了求教!!!

在object类中equals是这样定义的
G:%5C1.jpg
这里面的this具体指谁???

在String 类中重写了equals方法如下

这段代码实在是让我头痛 首先this 指谁???
后面的if判断我也能看懂,就是不得其精髓!求高手解释一遍!





G:%5CG:%5C1.jpg
作者: 李盼    时间: 2012-6-14 14:58
例如:
String s1 = “abc”;
String s2 = “abc”;
s1.equals(s2);
这个时候源码中的this就是指s1.
this指的是对象,就是调用equals方法的这个对象。this没有指类的说法,都是只这个类的实例对象。!
作者: 武剑峰    时间: 2012-6-14 15:05
this==obj这个中的this代表调用此方法的obj对象,例如exampleobj.equals(obj),传到equals()方法中this就代表exampleobj
作者: 胡卿    时间: 2012-6-14 15:08
你只要记住,this是哪个对象调用调用就代表哪个对象
  也就是equals()方法被哪个对象调用this就代表那个对象
作者: 张_涛    时间: 2012-6-14 15:09
首先,this是调用equals方法的那个对象的引用
首先判断两个引用是否指向同一个对象,如下:
if (this == anObject) {
            return true;
}若是,则返回真
然后判断anObject是否是String类型的对象,是才进行比较,不是那肯定not equal了。
紧接着判断两个String的长度,一样才进行进一步地比较
若两个String的长度相等,那么将他们转换为字符数组,从头到尾一个字符一个字符进行比较,若全部相同,则返回真。
至于count、value以及offset从何而来,在String类中是有这些量的定义的,你可以直接认为是this的长度、值及开始。
作者: 郑冬    时间: 2012-6-14 16:04
this代表调用equal方法的对象引用,this代表其所在函数所属对象的引用。
换言之:this代表本类对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2