Java初學者容易犯的代碼錯誤

1. 不會判斷空java

空指針異常是全部Java初學者接觸最多的異常,沒有之一。緣由是,大家拿到一個對象後容易不假思索的直接使用(直接給這個對象的屬性賦值,直接調用這個對象的方法等),不報異常纔怪呢!下面是最經典的判斷空的例子:程序員

    private boolean isEmpty(String str){
        if(str==null || "".equals(str)){
            return true;
        }
        return false;
    }

2. 在for循環嵌套裏調用底層查詢數據庫的方法數據庫

這種方式必定要避免!!由於查詢數據庫是很耗時的,而在for循環裏不停的查詢數據庫性能有多低可想而知,那麼怎麼替換這種方式呢?很簡單:在for循環外面先把符合條件的數據獲取到,存在map裏,而後在for循環裏面根據key獲取對應的value值。這種狀況雖然多些循環,可是隻須要查詢一次數據庫便可。jvm

3. 在List循環裏刪除元素性能

java.util.ConcurrentModificationException這個異常就是你在循環list是刪除元素形成的。List是按照下標尋找元素的,並且有大小長度,如何你刪除一個元素,list列表的大小縮小而且下標也會隨之變化,因此當你想要在一個循環中用下標刪除多個元素的時候,它並不會正常的生效。這個時候應該將list轉成Iterator遍歷刪除,代碼以下:學習

List<String> strList = new ArrayList<>();
strList.add("one");
strList.add("two");
strList.add("three");
strList.add("four");
for(String s : strList){
    if(s.equals("two")){
        strList.remove(s);//錯誤
    }
}
Iterator<String> iter = strList.iterator();
while (iter.hasNext()) {
    String s = iter.next();
    if (s.equals("two")) {
        iter.remove();//正確
    }
}    

4. 不會重構代碼spa

學習java的時候,每一個人都遇到過這種狀況:不一樣方法裏包含相同的功能代碼塊,例如日期轉換,初學者常常會在一個方法裏實現的代碼,若是另外一個方法也要用,就採用複製粘貼的方法,把相同的代碼拷到另外一個方法裏面去,這種代碼看起來多臃腫啊,後期也很難維護。遇到這種狀況應該把公共代碼進行封裝(面向對象第一特徵),無論誰要用到這個功能,只須要調用公共方法便可。指針

5. 建立對象太多code

我曾經見過一個程序員寫的方法裏處處都是new對象,把我嚇了一跳,這給jvm得形成多少垃圾啊!不是說不讓建立對象,這要根據業務狀況而定,最起碼不要創造垃圾(不使用的對象)。對象

相關文章
相關標籤/搜索