JAVA程式設計習慣之equals對比
養成良好的程式設計習慣,我們的程式碼質量才能越來越好。
objectA.equals(objectB)方法在Object類中是直接對比的記憶體地址是否相等,Long、Double、Integer等包裝類和String類都重寫了equals方法,會去對比雙方的值,而不是記憶體地址。
首先ojectA肯定是不能為空的,否則會出現空指標異常。我們來看下String.equals(Object obj)和Integer.equals(Object obj)兩個方法的原始碼:
public boolean equals(Object anObject) {
if (this == anObject) {
return true;
}
if (anObject instanceof String) {
String anotherString = (String)anObject;
int n = value.length;
if (n == anotherString.value.length) {
char v1[] = value;
char v2[] = anotherString.value;
int i = 0;
while (n-- != 0) {
if (v1[i] != v2[i])
return false;
i++;
}
return true;
}
}
return false;
}
public boolean equals(Object obj) {
if (obj instanceof Integer) {
return value == ((Integer)obj).intValue();
}
return false;
}
我們可以看到,重寫的equals方法在對比值的之前都會先判定傳入的objectB物件是否屬於objectA物件所屬的類。在String.equals(Object objectB)方法中就會判定objectB是否是String類的物件。如果objectB是null,自然就不是String類的物件,也就不會執行下面的程式碼塊,也就不會空指標。
因此,如果是一個String常量和一個物件做比較。
例如:String s1 = “1” 、String s2,對比s1和s2的值。
直接呼叫s1的equals方法,不用去判定s2是否為空。
public boolean test1(String s2) {
return "1".equals(s2);
}
如果是基本資料型別的常量和包裝類物件作對比,那直接使用==就可以了,也無需空判定。
public boolean test2(Integer i) {
return 1 == i;
}
如果是兩個物件作對比,也只需要判定第一個物件是否是空.
public boolean test2(String s1, String s2) {
if(s1 != s2 && s1 != null) {
return s1.equals(s2);
}
return true;
}
相關文章
- 程式設計好習慣程式設計
- 好的程式設計習慣程式設計
- 不好的程式設計習慣之檔案下載程式設計
- Java物件之間的比較之equals和==Java物件
- 15個程式設計好習慣程式設計
- C#程式設計好習慣C#程式設計
- Delphi程式設計之--慣用法 (轉)程式設計
- 10個對開發專案有害的程式設計習慣程式設計
- Java和Python的程式設計對比JavaPython程式設計
- 谷歌程式設計師有哪些高效的程式設計習慣?谷歌程式設計師
- 程式碼審查和不良程式設計習慣程式設計
- 好程式設計師Java學習進階之MySQL資料庫結構和引擎比對程式設計師JavaMySql資料庫
- 高效程式設計師的七個習慣程式設計師
- C 語言程式設計習慣總結程式設計
- 程式設計師的10個好習慣程式設計師
- 21種好的SQL程式設計習慣SQL程式設計
- 成功程式設計師的8個習慣程式設計師
- Java學習之AWT GUI程式設計JavaGUI程式設計
- 我的iOS高效程式設計祕訣-堅持程式設計習慣iOS程式設計
- 程式設計師偷偷深愛的 9 個不良程式設計習慣程式設計師
- 不好的程式設計習慣之列表儲存程式設計
- 優秀的程式設計師都有哪些習慣?程式設計師
- 優秀程式設計師7個好習慣程式設計師
- google內部使用的良好程式設計習慣Go程式設計
- 低效程式設計師的7個壞習慣程式設計師
- 程式設計師特有的9個壞習慣程式設計師
- 優秀程式設計師的十個習慣程式設計師
- 分享 程式碼大全 節選 -- 程式設計師的習慣程式設計師
- 漫談 C++:良好的程式設計習慣與程式設計要點C++程式設計
- 漫談C++:良好的程式設計習慣與程式設計要點C++程式設計
- Java學習之Swing Gui程式設計JavaGUI程式設計
- 設計習慣比較:高凝聚/松耦合、DRY/錯誤抽象 - Jesse抽象
- 助力程式設計師成功的幾個好習慣程式設計師
- 快樂Node程式設計師的10個習慣程式設計師
- 高效能程式設計師的七個習慣程式設計師
- 100分程式設計師的8個習慣程式設計師
- 【程式設計好習慣】青睞小粒度鎖薦程式設計
- 10個程式設計好習慣:優秀程式設計師的經驗分享程式設計師