原来一直对equals和==有点晕。
今天突然想到把java类库的源码找出来看看。呵呵,全清楚了。
java.lang.Object类的equals()定义是:
??? public boolean equals(Object obj) { ??????? return (this == obj); ??? }
而java.lang.String类覆盖了父类的equals(),定义如下:
??? 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; ??? }
其中,??? /** The value is used for character storage. */ ??? private char value[];
??? /** The offset is the first index of the storage that is used. */ ??? private int offset;
??? /** The count is the number of characters in the String. */ ??? private int count;
看过后是不是很清楚啊hehe。

|