?? equals與==區別.txt
字號:
equals是java.lang.Object定義的方法,Object是頂層類,所以所有的java對象都擁有一個方法equals()
不同的子類可以根據需要對equals()進行重載,例如,學生對象擁有學號和名字兩個屬性,如何定義兩個學生對象是相等的對象呢?根據你的實際需要來定義
class Student
{
String name;
int id;
public boolean equals(Student other)
{
if(id == other.id) return true;
return false;
}
}//這個類定義了,id相同的兩個學生對象就是相等的對象,無論名字是否相等
也可以定義成id和名字都相等,才是兩個相等的學生對象,如下
class Student
{
String name;
int id;
public boolean equals(Student other)
{
if(id == other.id && name.equals(other.name)) return true;
return false;
}
在這里,你要明白equals是個方法,和其他的方法沒有什么不同,定義什么邏輯
完全有你的需要而定。
==是運算符,比較兩側的值是否相等,對于原子類型(int/byte/short/long/float/double/char/boolean)是值得比較。
對象的引用類型存儲對象的實際地址,所以比較的是兩個地址,例如:
Student s1,s2;
s1 = new Student();
s2 = new Studnet();
s1==s2//s1 存一個學生的地址,s2存另一個學生對象的地址,現在比較他們的地址值(是否是同一個對象?)
s1.equals(S2) 只是調用了一個方法,執行預先定義好的邏輯。
java.lang.Object類中的equals(Object o)實現了兩個對象是否是同一個對象的邏輯比較,是同一個對象返回true,不是返回假。
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -