本帖最后由 yuZhe_toString 于 2014-8-16 09:08 编辑
如果比较的对象是引用类型:
== 比较的是两个对象的地址是否相等。
equals 比较的是两个对象的值是否相等,由于equals是object类中的方法,所以这个方法可以被重写,所以说这个比较值可以由创建者来决定。在一些哈希类的容器里,经常需要定义equals方法。
如果比较对象是基本类型:
== 比较的是两个变量的值是否相等。
equals 由于是基本类型,不存在对象的概念,所以更谈不上方法,更涉及不到equals。
以下是String类中 equals 方法的源码,你可以体会一下。
- public boolean equals(Object anObject) {
-
- //比较两个对象的引用地址是否相同,若相同,那么不用说别的,两个对象肯定一模一样。
- if (this == anObject) {
- return true;
- }
- //若上面不成立,判断两个对象类型是否一致
- if (anObject instanceof String) {
- //以下是String类自定义的比较规则。
- String anotherString = (String) anObject;
- int n = value.length;
- if (n == anotherString.value.length) {
- char v1[] = value;
- char v2[] = anotherString.value;
- int i = 0;
- while (n-- != 0) {
- if (v1[i] != v2[i])
- return false;
- i++;
- }
- return true;
- }
- }
- return false;
- }
复制代码
|