equals()方法的最佳實踐:
1. 參數命名爲otherObject
2. 檢測this和otherObject是否引用同一對象, if(this==otherObject) return true;
3. 檢測otherObject是否爲null,爲null則返回false,if(otherObject==null) return false;
4. 比較this和otherObject是否爲同一個類,若是equals()的語義在每一個子類中有改變, 就使用getClass()檢測, if(this.getClass()!=otherObject.getClass()) return false; 若是全部子類都有統一的語義, 就使用instanceOf檢測
5. 將otherObject轉化爲相應的類類型變量,ClassName other = (ClassName)otherObject
6. 對全部的域進行比較,==比較基本類型,equals比較對象,全部均匹配返回true, 若是子類從新定義了equals(),就要在其中包含調用super.equals(other).數組
Arrays.toString()能夠打印數組,Arrays.deepToString()能夠打印多維數組安全