java equals的重写问题 望大神解惑

equals不重写的时候和 == 一样 都是比较对象在堆内存的地址
那什么时候不需要重写 equals就是比较对象本身呢~~
还有要重写 怎么重写啊 望大神给个例子 而且网上看的例子里面都会调用自身equals
而且str1是哪里跑出来得 什么意思都~~~~

public boolean equals(Object obj) {

if(this == obj)

return false;

if(obj == null)

return false;

if(getClass() != obj.getClass() )

return false;

MyClass other = (MyClass)obj;

if(str1 == null) {

if(obj.str1 != null) {

return false;

}

}else if (!str1.equals(other.str1) )

return false;

}

if(var1 != other.var1)

return false;

return true;

}

推荐阅读这篇文章。http://www.cnblogs.com/silence-hust/p/4558701.html

str1 是自定义的一个对象, equals() 是String的一个方法

那你看看这里
http://blog.csdn.net/hackage4619/article/details/60135281

Effective Java 第8、9条,写的很清楚,看书看书!

dddddddddddddd