您好,登錄后才能下訂單哦!
這篇文章將為大家詳細講解有關equals()函數與“==”的作用有什么不同,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。
首先,來看看它們的區別:
2、覆蓋equals()方法的情況
修改上面的EqualsTest,覆蓋equals()方法:
public class EqualsTest { public static void main(String[] args) { // 新建2個相同內容的Person對象, // 再用equals比較它們是否相等 User user1 = new User("James", 100); User user2 = new User("James", 100); System.out.printf("比較結果:" + user1.equals(user2)); } /** * @desc User類。 */ static class User { int age; String name; public User(String name, int age) { this.name = name; this.age = age; } public String toString() { return name + " - " + age; } @Override public boolean equals(Object obj) { if (this == obj) return true; if (obj == null) return false; if (getClass() != obj.getClass()) return false; User other = (User) obj; if (age != other.age) return false; if (name == null) { if (other.name != null) return false; } else if (!name.equals(other.name)) return false; return true; } } }
運行結果:
true
結果分析:我們在EqualsTest.java 中重寫了User的equals()函數:當兩個User對象的 name 和 age 都相等,則返回true。因此,運行結果返回true。
== 的作用
“==”:它的作用是判斷兩個對象的地址是不是相等。即判斷引用對象是不是指向的堆中的同一個對象,我們知道,凡是new出來的對象都在堆中。而對象的引用都存放在棧中,具體來講就是放在棧幀中,我們來看下面一段代碼:
public static void main(String[] args) { User user1 = new User("James", 100); User user2 = new User("James", 100); System.out.println("user1.equals(user2):" + user1.equals(user2)); System.out.println("user1==user2:" + (user1==user2)); }
輸出結果:
user1.equals(user2):true user1==user2:false
指向的是堆中兩塊不同的區域,所以用 "==" 比較時返回的是false。
關于equals()函數與“==”的作用有什么不同就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。