equals函數在Object類當中,而Object類是所有類的父類,所以所有的類里面都有equals函數。
“==”操作符之前用于比較兩個基本數據類型的值是否相等,而對于引用數據類型,“==”操作符用于判斷兩個引用是否指向堆內存中的同一個對象。

class User{String name;int age;}class Test{public static void main(String args[]){User u1 = new User();User u2 = new User();User u3 = u1;boolean b1 = u1 == u2;boolean b2 = u1 == u3;System.out.PRintln(b1);System.out.println(b2);}}
equals函數用來比較兩個對象的內容是否相等
對象的內容相等通常需要滿足下面兩個條件:
1、對象的類型相同(用instanceof比較)
2、兩個對象的成員變量的值完全相同
Object函數中的equals方法:

class Test{public static void main(String args[]){User u1 = new User();User u2 = new User();User u3 = u1;boolean b1 = u1.equals(u3);System.out.println(b1);}}
通過對比我們發現調用Object的equals方法和使用“==”比較兩個對象是否相等沒有區別,所以我們需要根據上述兩個條件復寫equals方法
class User{String name;int age;public boolean equals(Object obj){if(this == obj){return true;}boolean b = obj instanceof User;if(b){User u = (User)obj;if(this.age == u.age && this.name.equals(u.name)){return true;}else{return false;}}else{return false;}}}首先判斷this和obj是否指向堆內存中的同一個對象,是的話就返回true,再判斷obj是不是User類型的,不是的話返回false,是的話就進行向下轉型,再比較this和u的成員變量是否相等。基本數據類型的成員變量比較使用"==",引用數據類型的成員變量比較用equals
class Test{public static void main(String args[]){User u1 = new User();User u2 = new User();User u3 = new User();u1.name = "zhangsan";u1.age = 12;u2.name = "lisi";u2.age = 13;u3.name = "zhangsan";u3.age = 12;System.out.println(u1.equals(u2));System.out.println(u1.equals(u3));}}
新聞熱點
疑難解答