JavaRush /Java 博客 /Random-ZH /喝咖啡休息#173。HashMap和Hashtable有什么区别。如何在 Java 中查找并修复 NullPoin...

喝咖啡休息#173。HashMap和Hashtable有什么区别。如何在 Java 中查找并修复 NullPointerException

已在 Random-ZH 群组中发布

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