以下为转载(作者的讲解建立在类重写equals后)
通俗点讲,==是看看左右是不是一个东西。equals是看看左右是不是长得一样。
如何记住嘛。如果单纯是想记住,
==:等于。
equals:相同。
两个长得一样的人,只能说长的相同(equals),但是不等于他们俩是一个人。你只要记住equals,==就不用记了。
楼主你感受一下。
---------------------------------------------------------------------------------
术语来讲的区别:
1.==是判断两个变量或实例是不是指向同一个内存空间
equals是判断两个变量或实例所指向的内存空间的值是不是相同
2.==是指对内存地址进行比较
equals()是对字符串的内容进行比较
3.==指引用是否相同
equals()指的是值是否相同
------------------------------
未重写之前,==与equals比较结果一致,
默认情况下(继承自Object类),equals和==是一样的,除非被覆写(override)了。
public boolean equals(Object obj) {
return (this == obj);
}
语义上:==指的是内存引用一样。equals是指的是逻辑相等。逻辑相等具体的意思由编写者决定。