1.1.1.equals方法
== 比較運算符,比較的是兩個變量中直接保存的內容;也就是說:
如果比較的是兩個基本類型數據,比較的就是兩個值;
如果比較的是兩個引用類型的數據,比較的就是兩個內存地址。
也就是說,如果是兩個引用類型的變量比較,只有當這兩個引用變量指向的是同一個對象時,返回的結果才是真(true),否則就是false。
比較兩個對象是否相等,指的是,兩個對象需要比較的各個屬性值是否相等;但兩個對象不一定是同一個對象;
Object類中默認的比較就是使用==比較:
重寫equals:
publicbooleanequals(Objectobj) {
if(this==obj)
returntrue;
if(obj==null)
returnfalse;
if(getClass() !=obj.getClass())
returnfalse;
Personother= (Person)obj;
if(age!=other.age)
returnfalse;
if(gender==null ) {
if(other.gender!=null)
returnfalse;
}elseif(!gender.equals(other.gender))
returnfalse;
if(name==null) {
if(other.name!=null)
returnfalse;
}elseif(!name.equals(other.name))
returnfalse;
returntrue;
}
結論:
凡是基本類型變量的相等性比較,可以直接使用== 運算符;
凡是引用類型變量的相等性比較,就應該使用equals方法;
如果使用 == 比較引用類型的變量,實際比較的就是引用地址,只有兩個引用地址指向同一個對象,結果才是true;
閱讀更多 IT極客學社 的文章