== 与 equals 揭秘

== 与equals 的区别
从object层次来说。== 与equals 是相同的,都是比较内存地址,也就是说,都是比较两个引用是否指向同一个对象,是则返回true
,否则返回false。
但是很多类 overwrite了equals方法,最典型的是String 类。

下面我们来看一下jdk源码 真相大白----呵呵:
  Object.java:
      public boolean equals(Object obj) {
	       return this == obj    
         }
 

String.java:
   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;
     }

你可能感兴趣的:(java,jdk,J#)