本文共 1699 字,大约阅读时间需要 5 分钟。
public boolean equals(Object anObject) { //==是比较传入的anObject对象和本对象地址是否一致, //一致返回ture //不一致返回false if (this == anObject) { return true; } //接着判断anObject是否为String类型或者是其子类 //是则进入下一步判断 //不是则直接返回false if (anObject instanceof String) { //既然进入判断则,证明可以强转为String 便于判断 String anotherString = (String)anObject; //value是字符串转变的字符数组,有private修饰 int n = value.length; //判断传入字符串长度和原对象字符串长度是否一致 //不一致则一定不同 if (n == anotherString.value.length) { char v1[] = value; //Java的访问控制权限是定义在类级别的, //这里的anotherString.value //是在同类(String)中访问的 //并不会造成访问不到的情况 char v2[] = anotherString.value; int i = 0; //从后往前遍历,字符不等则放回false while (n-- != 0) { if (v1[i] != v2[i]) return false; i++; } //循环结束,没有发现有不同,则返回true return true; } } return false; }
String anotherString = (String)anObject;//value是字符串转变的字符数组,有private修饰int n = value.length;//判断传入字符串长度和原对象字符串长度是否一致//不一致则一定不同if (n == anotherString.value.length) {
在这段源码中我们可以发现,里面存在着一个anotherString.value.length
这个东西。
源码研究深一点,幸福指数多一点。 ---------swrici
转载地址:http://xbdvi.baihongyu.com/