不变对象,可变对象,equals和==

王朝java/jsp·作者佚名  2006-01-09
窄屏简体版  字體: |||超大  

原来一直对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。

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航