==
“==”或等號操作在Java編程語言中是一個二元操作符,用于比較原生類型和對象。就原生類型如boolean、int、float來說,使用“==”來比較兩者,這個很好掌握。但是在比較對象的時候,就會與equals()造成困惑。“==”對比兩個對象基于內存引用,如果兩個對象的引用完全相同(指向同一個對象)時,“==”操作將返回true,否則返回false。
equals()
equals()方法定義在Object類里面,根據具體的業務邏輯來定義該方法,用于檢查兩個對象的相等性。例如:兩個Employees被認為是相等的如果他們有相同的empId的話,你可以在你自己的domain對象中重寫equals方法用于比較哪兩個對象相等。equals與hashcode是有契約的(無論什么時候你重寫了equals方法,你同樣要重寫hashcode()方法),默認的equals方法實現是與“==”操作一樣的,基于業務需求重寫equals方法是最好的實踐之一,同樣equals與compareTo保持一致也不足為奇,以至于存儲對象在Treemap或treeset集合中時,將使用compareTo方法檢查相等性,行為是一致的。
equals與==區別
1.== 常用于比較原生類型,equals常用于比較對象類型
2.==與equals用于比較對象類型,當引用地址不相同時,==返回false而equals()返回值取決于重寫的實現。可以是true也可以是false.