基础Java03

 关于 “==” 和 “equals” 

  1) 对于Object类来说 “==” 和 “equals” 是等价的,判断引用是否指向同一个对象。

       API 实现: public boolean equals(Object obj) {

                                return (this == obj);

                          }

  2)对于String类来说,“equals” 方法重写了Object类的“equals”,

        可以用来比较两个String类型的字面值是否相等,而不只是判断是否指向同一个对象。

        API实现:    

 
 
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;
    }

   3)对于其它没有重写父类Object中equals方法的类来说,

        “==” 和 "equals"一样。而对于有重写的equals的类来说,

        就要看具体的实现了。

      所以不能笼统地说:“==”是用来比较引用是否相等,"equals"用来比值是否相等。

                                            

你可能感兴趣的:(基础Java03)