==和equals方法的比較
“==”代表比較雙方是否相同。如果是基本型別則表示值相等,如果是引用型別則表示地址相等即是同一個物件。
Object類中定義有:public boolean equals(Object obj)方法,提供定義“物件內容相等”的邏輯。比如,我們在公安系統中認為id相同的人就是同一個人、學籍系統中認為學號相同的人就是同一個人。
Object 的 equals 方法預設就是比較兩個物件的hashcode,是同一個物件的引用時返回 true 否則返回 false。但是,我們可以根據我們自己的要求重寫equals方法。
示例:
public class TestEquals {
public static void main(String[] args) {
Person p1 = new Person(123,"陳輝");
Person p2 = new Person(123,"程式設計師");
System.out.println(p1==p2); //false,不是同一個物件
System.out.println(p1.equals(p2)); //true,id相同則認為兩個物件內容相同
String s1 = new String("理工");
String s2 = new String("理工");
System.out.println(s1==s2); //false, 兩個字串不是同一個物件
System.out.println(s1.equals(s2)); //true, 兩個字串內容相同
}
}
class Person {
int id;
String name;
public Person(int id,String name) {
this.id=id;
this.name=name;
}
public boolean equals(Object obj) {
if(obj == null){
return false;
}else {
if(obj instanceof Person) {
Person c = (Person)obj;
if(c.id==this.id) {
return true;
}
}
}
return false;
}
}
JDK提供的一些類,如String、Date、包裝類等,重寫了Object的equals方法,呼叫這些類的equals方法, x.equals (y) ,當x和y所引用的物件是同一類物件且屬性內容相等時(並不一定是相同物件),返回 true 否則返回 false。
相關文章
- BigDecimal的equals() 和 compareTo() 方法比較Decimal
- ==與equals比較
- JAVA中字串比較equals()和equalsIgnoreCase()的區別Java字串
- 為什麼阿里巴巴禁止使用BigDecimal的equals方法做等值比較?阿里Decimal
- jQuery的prop和attr方法比較jQuery
- ==和equals方法的區別
- String的equals和hashCode方法
- Java中equals和==比的是什麼Java
- js 深比較和淺比較JS
- Java中 equals() 方法和 == 的區別Java
- 搞懂 Java equals 和 hashCode 方法Java
- Go和Python比較的話,哪個比較好?GoPython
- ImageMagic 和 GraphicsMagick 的比較
- ArrayList和LinkedList的比較
- Oracle date 型別比較和String比較Oracle型別
- initialize方法與load方法比較
- 自動生成hashcode和equals方法
- Java基礎系列-equals方法和hashCode方法Java
- Equals方法
- Cesium 比較常用的幾個方法
- not in 和 not exists 比較和用法
- TreeMap和HashMap的元素比較HashMap
- Go 與 C++ 的對比和比較GoC++
- etcd和redis比較Redis
- TCP和UDP比較TCPUDP
- Redis 和 Memcached 比較Redis
- Java和JavaSciprt比較Java
- 四種在Javascript比較物件的方法JavaScript物件
- 訪問vector元素方法的效率比較
- 分割陣列的幾種方法比較陣列
- String類中的equals方法與Object類中的equals方法的不同點Object
- powershell中的where和foreach比較
- tbase和postgres-xl的比較
- EXCEL,POI,EASYEXCEL的使用和比較Excel
- 類和類之間的比較
- mongodb和hbase的簡單比較MongoDB
- Mysql中的Datetime和Timestamp比較MySql
- [C#] string 和 StringBuilder 的比較C#UI