更新時間:2022-05-11 11:08:27 來源:動力節(jié)點 瀏覽2404次
大家在學習Java的過程中也會出現(xiàn)一些錯誤,動力節(jié)點小編來給大家總結一下Java常見錯誤.
“==”和“equals()”之間存在巨大差異。這兩者在任何情況下都不能相互替代。“==”用于檢查兩個對象的引用,而“equals()”用于檢查java中這兩個對象內部的值。看看下面的例子:
每當將任何值與文字或常量進行比較時,請確保將文字放在 equals() 方法之前。如果你把 getter() 方法放在首位,那么就有可能出現(xiàn) NullPointerException。
因此,正確的方法是把常數(shù)值放在第一位,如下所示。或者空檢查也可以,但我想這只是一個額外的 if 語句。
雖然預防是好的,但過度預防是不行的。為了避免 NullPointerException,有時開發(fā)人員傾向于在“for-each”循環(huán)中對每一個內容進行空值檢查。但是沒有必要檢查循環(huán)內的空值。“for-each”循環(huán)僅在列表中存在元素時迭代。看下面的例子來確認:
看,沒有 NullPointerException!因此,不需要下面的空檢查。
很多時候,在 switch 案例中缺少 break 語句直到在生產中運行才被發(fā)現(xiàn)。
如果你在代碼示例中忘記了 case 0 中的 break,程序將寫“Zero”后跟“One”,因為這里的控制流將遍歷整個 switch 語句,直到遇到 break。因此,在編寫 switch case 時再次檢查。
ConcurrentModificationException 當一個集合在迭代時被修改時發(fā)生。考慮一個實例,我們有一個人員列表,并且想要
從中刪除一個人。如果我們運行此代碼,將引發(fā)并發(fā)修改異常。為了解決這個問題,有多種方法可用。首先,收集對象并在另一個循環(huán)中刪除它們。或者你可以使用 Iterator.remove() 方法。
這種方式更簡潔,不需要創(chuàng)建額外的集合。