一. 介紹:
Java中的 "==" 是一個運算子,是用于比較兩個物件地址值或基本資料型別之間的值是否相等,它的來源可以追溯到C語言,以及受C語言影響的許多其他編程語言,
Java中的equals() 是一個方法,可重寫該方法用于比較兩個物件屬性內容是否相等的方法,該方法繼承自Object類,在Java的所有類中都可以使用,
二. 區別:
1. 語法不同:
== 是運算子 C語言撰寫的運算子;
equals() 是Object類的方法;
2. 作用不同:
基本型別: == 是用來做值比較的,而equals()不能直接用于比較基本資料型別,需要轉換為其對應的包裝型別,
參考型別: == 和 equals() 都可以比較堆疊記憶體中參考的地址值是否相等 ,相等為 true 否則為 false,但是通常對某個類重寫equals()方法,以自定義兩個物件相等的條件(Object.equals() 是比較地址),
三. 代碼展示
public class User { private String name; // 略: 構造方法、getter、setter、toString()等 // 重寫equals() 方法 @Override public boolean equals(Object o) { if (this == o) return true; // 若地址值一致則直接回傳 true if (o == null || getClass() != o.getClass()) return false; // 若物件為null 或者 物件非同一個類,則直接回傳false; User user = (User) o; // 獲取該物件,強轉為user類 return Objects.equals(name, user.name); // 使用equals 比較物件屬性是否一致,回傳結果true 或 false } // 重寫hashcode方法 @Override public int hashCode() { return Objects.hash(name); } } public static void main(String[] args) { User u1 = new User("小米"); User u2 = new User("小米"); // 比較地址值 System.out.println(u1 == u2); // 比較物件內容 System.out.println(u1.equals(u2)); } 輸出結果: false true
從代碼上可以看出來在new 新物件后,地址值是發生改變的,通過 == 運算子 或者 原生Object.equals() 方法,是不能判斷物件的屬性的,所以需要在該類重寫equals()方法,使自定義類比較其值是否相等,
完
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/556924.html
標籤:其他
上一篇:Java 包、訪問修飾符
下一篇:返回列表