JavaRush /Java Blog /Random-TW /喝咖啡休息#173。HashMap和Hashtable有什麼差別。如何在 Java 中尋找並修復 NullPoin...

喝咖啡休息#173。HashMap和Hashtable有什麼差別。如何在 Java 中尋找並修復 NullPointerException

在 Random-TW 群組發布

HashMap 和 Hashtable 有什麼差別

來源:Medium 今天,您將了解最受歡迎的 Java 面試問題之一的答案:HashMap 和 Hashtable 之間有什麼區別。 喝咖啡休息#173。 HashMap和Hashtable有什麼差別。 如何在 Java 中尋找並修復 NullPointerException - 1哈希表是一種基於哈希和 Map 介面的實作來儲存金鑰對及其值的資料結構。HashMap 也是用於儲存鍵和值的資料結構,基於哈希和 Map 介面的實作。HashMap 可讓您快速透過鍵取得值。例如,用戶的姓名和電話號碼。Java 中的 HashMap 和 Hashtable 之間存在顯著差異。其中包括線程安全、同步和 Map 實現一致性。在選擇要在 Java 程式中使用的資料結構類型時,考慮以下幾個方面非常重要: HashMap 是非同步、無序的鍵值對映射。它允許空值並使用雜湊碼作為相等性檢查,而Hashtable是鍵值對的同步有序映射。不允許空值並使用equals()方法檢查相等性。HashMap 的預設容量為 16,Hashtable 的預設初始容量為 11。HashMap 物件的值是使用迭代器進行迭代的,而 Hashtable 是除向量之外唯一使用枚舉器來迭代的類別。迭代 Hashtable 物件的值。請記住,HashMap 和 Hashtable 之間的差異是 Java 面試中最常見的問題之一。

如何在 Java 中尋找並修復 NullPointerException

來源: Theflashreads 讀完本文後,您將能夠更好地查找並修復 Java 程式碼中的常見錯誤 - NullPointerException。 喝咖啡休息#173。 HashMap和Hashtable有什麼差別。 如何在 Java 中尋找並修復 NullPointerException - 2

什麼是空指標異常?

java.lang.NullPointerException是Java中的執行時期異常。當嘗試存取未指向或引用任何物件(即為 null)的變數時,就會發生這種情況。由於NullPointerException是運行時異常,因此不需要在應用程式程式碼中明確捕獲和處理它。

什麼情況下會發生NullPointerException?

當嘗試存取未初始化的物件時,會發生NullPointerException 。正如已經提到的,當物件引用無處可去並且具有空值時,就會發生這種情況。以下是一些最常見的NullPointerException異常場景:
  • 存取空物件的屬性。
  • 從引發異常的方法引發 null。
  • 依賴注入框架的配置不正確,例如:(Spring)。
  • 將空參數傳遞給方法。
  • 在空物件上呼叫方法。
  • 在空物件上使用同步。
  • 存取空物件的索引元素(例如,在陣列中)。

範例 NullPointerException

在此範例中,我們嘗試呼叫printLength方法,該方法將字串作為參數並列印其長度。如果作為參數傳遞的字串值為 null,則會拋出java.lang.NullPointerException
public class NullPointerExceptionExample {

    private static void printLength(String str) {

        System.out.println(str.length());

    }



    public static void main(String args[]) {

        String nullString = null;

        printLength(nullString);

    }

}





Exception in thread "main" java.lang.NullPointerException

    at NullPointerExceptionExample.printLength(NullPointerExceptionExample.java:3)

    at NullPointerExceptionExample.main(NullPointerExceptionExample.java:8)

如何避免拋出 NullPointerException

可以透過使用以下檢查和預防方法來避免NullPointerException :
  • 在存取物件的方法或屬性之前新增檢查,確保物件已正確初始化。

  • 使用 Apache Commons StringUtils 進行字串操作:例如,在進一步使用字串之前,使用StringUtils.isNotEmpty()檢查字串是否為空。

    import org.apache.commons.lang3.StringUtils;
    
    
    
    public class NullPointerExceptionExample {
    
        private static void printLength(String str) {
    
            if (StringUtils.isNotEmpty(str)) {
    
                System.out.println(str.length());
    
            } else {
    
                System.out.println("This time there is no NullPointerException");
    
            }
    
        }
    
    
    
        public static void main(String args[]) {
    
            String nullString = null;
    
            printLength(nullString);
    
        }
    
    }
  • 盡可能使用基元而不是對象,因為它們不能有空引用。例如,使用int代替Integer,使用boolean代替Boolean

  • 請務必仔細檢查您的程式碼。這將減少拋出NullPointerException的可能性。

留言
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION