equals 方法引發的問題

2021-10-12 06:33:15 字數 467 閱讀 5517

場景:

我需要在進入乙個 fragment 的時候進行乙個彈窗密碼校驗,只有通過密碼校驗,才可以允許使用者訪問該 fragment。但是輸入的密碼是對的,依舊顯示密碼錯誤,無法登陸。

分析:我在密碼校驗成功和密碼校驗失敗的地方都打上 log,同時列印出輸入(input)內容和密碼(password),發現密碼與輸入內容一致,但是卻進入了密碼校驗失敗的邏輯,再列印input.equals(password) ,發現是false,那肯定是 equals 方法出了問題,這裡的的 input 是 string 變數,password 是 stringbuilder 物件,於是懷疑stringbuilder 是不是沒有重寫 equals 方法。

結果:猜想正確,stringbuilder 沒有重寫 equals 方法,比較的不是值,而是位址,這裡通過 tostring() 方法將 stringbuilder 型別轉化成 string 型別即可。

乙個equals方法引發的錯誤

今天在寫乙個狀態判斷的時候,沒有注意到其中乙個物件為short,另外乙個是基本型別int,導致雖然數值相等但是equals方法返回false,查詢short方法和equals方法後得知,大多數類都重寫了equals方法,重寫的時候一般第一步就是判斷型別是否相同,不同就返回false。所以雖然shor...

由Equals與 的區別所引發的問題

1 如果通過string str kingsea 這樣對string變數賦值,兩種方式比較的結果是一樣的。因為這樣賦的內容一樣時,系統就會直接從位址池裡取出 kingsea 給str2,所以str1與str2的位址是一樣的。但是如果通過string str new string kingsea 這樣...

關於equals 方法完善問題

如下 示例 public boolean equals object o if o null getclass o.getclass student s student o 關鍵。return s.no this no this school.equals s.school class studen...