java equals函数用法详解
程序员文章站
2023-12-03 14:00:58
equals函数在基类object中已经定义,源码如下 复制代码 代码如下: public boolean equals(object obj) { return (thi...
equals函数在基类object中已经定义,源码如下
public boolean equals(object obj) {
return (this == obj);
}
从源码中可以看出默认的equals()方法与“==”是一致的,都是比较的对象的引用,而非对象值(这里与我们常识中equals()用于对象的比较是相饽的,原因是java中的大多数类都重写了equals()方法,下面已string类举例,string类equals()方法源码如下:)
[java]
/** the value is used for character storage. */
private final char value[];
/** the offset is the first index of the storage that is used. */
private final int offset;
/** the count is the number of characters in the string. */
private final int count;
[java] view plaincopyprint?
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;
}
} //www.software8.co
return false;
}
string类的equals()非常简单,只是将string类转换为字符数组,逐位比较。
综上,使用equals()方法我们应当注意:
1. 如何equals()应用的是自定义对象,你一定要在自定义类中重写系统的equals()方法。
2. 小知识,大麻烦。
复制代码 代码如下:
public boolean equals(object obj) {
return (this == obj);
}
从源码中可以看出默认的equals()方法与“==”是一致的,都是比较的对象的引用,而非对象值(这里与我们常识中equals()用于对象的比较是相饽的,原因是java中的大多数类都重写了equals()方法,下面已string类举例,string类equals()方法源码如下:)
[java]
复制代码 代码如下:
/** the value is used for character storage. */
private final char value[];
/** the offset is the first index of the storage that is used. */
private final int offset;
/** the count is the number of characters in the string. */
private final int count;
[java] view plaincopyprint?
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;
}
} //www.software8.co
return false;
}
string类的equals()非常简单,只是将string类转换为字符数组,逐位比较。
综上,使用equals()方法我们应当注意:
1. 如何equals()应用的是自定义对象,你一定要在自定义类中重写系统的equals()方法。
2. 小知识,大麻烦。