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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王章亚 中级黑马   /  2012-6-14 14:46  /  2402 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王章亚 于 2012-6-14 15:02 编辑

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

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

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

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





G:%5CG:%5C1.jpg

5 个回复

倒序浏览
例如:
String s1 = “abc”;
String s2 = “abc”;
s1.equals(s2);
这个时候源码中的this就是指s1.
this指的是对象,就是调用equals方法的这个对象。this没有指类的说法,都是只这个类的实例对象。!
回复 使用道具 举报
this==obj这个中的this代表调用此方法的obj对象,例如exampleobj.equals(obj),传到equals()方法中this就代表exampleobj
回复 使用道具 举报
你只要记住,this是哪个对象调用调用就代表哪个对象
  也就是equals()方法被哪个对象调用this就代表那个对象
回复 使用道具 举报
首先,this是调用equals方法的那个对象的引用
首先判断两个引用是否指向同一个对象,如下:
if (this == anObject) {
            return true;
}若是,则返回真
然后判断anObject是否是String类型的对象,是才进行比较,不是那肯定not equal了。
紧接着判断两个String的长度,一样才进行进一步地比较
若两个String的长度相等,那么将他们转换为字符数组,从头到尾一个字符一个字符进行比较,若全部相同,则返回真。
至于count、value以及offset从何而来,在String类中是有这些量的定义的,你可以直接认为是this的长度、值及开始。
回复 使用道具 举报
this代表调用equal方法的对象引用,this代表其所在函数所属对象的引用。
换言之:this代表本类对象的引用。哪个对象在调用this所在的函数,this就代表哪个对象
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马