在写java程序时往往要遇到判断两个实例是否相等的问题,那么Object中的equals(Object),到底比较的是两个实例中的什么呢?我认为他们比较的是创建实例时所深成的hashCode,(可是我的直觉认为不是这样的),如下:
class Test {
public String name;
}
Test t = new Test();
t.name = "hello";
Test two = new Test();
two.name = "hello";
其中t.equals(two) 和 t == two 返回的都是false,(其中t和two这两个实例所生成的hashCode是不相同的)
而对如下:
String st = "hello";
String str = new String("hello");
其中str.equals(str)和st == str返回的分别是true和false (其中st和str这两个实例所生成的hashCode是相同的)
这里我有一个问题,在什么情况下"=="才成立?以前我认为两个实例的hashCode向同这两个实例就成立了,可是上面的例子已经证明了不成立了。
那到底什么情况下"=="才成立呢?(不要告诉我,他们的条件是要在同一个实例的情况下,那我就倒!!!!!)
那不同的实例与hashCode有什么样的关系呢?