//沒有重構equals方法。
//Cat.java
public?class?Cat{}
//Program.java
public?class?Program{
????public?static?void?main(String[]?args){
????????Cat?cat1?=?new?Cat();
????????Cat?cat2?=?new?Cat();
????????System.out.println(cat1.equals(cat2));?//false
????????
????????String?s1?=?new?String();
????????String?s2?=?new?String();
????????System.out.println(s1.equals(s2));?//?同樣是對象,此處為何是true??
????}
}
3 回答

yanrun
TA貢獻317條經(jīng)驗 獲得超240個贊
看一下String的源碼 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; ????}
就是把兩個String轉換成字符串數(shù)組然后遍歷比較
點擊展開后面1條
添加回答
舉報
0/150
提交
取消