Java数组何时抛出NullPointerException?


在Java中,每种类型都有默认值。当您不初始化类的实例变量时,Java编译器会代表您使用这些值初始化它们。Null是对象类型的默认值,您也可以在方法中手动将null赋值给对象。

Object obj = null;

但是,如果您这样做,则不能使用具有null值的对象(或使用null值代替对象),否则将抛出NullPointerException。

示例

public class Demo {
   String name = "Krishna";
   int age = 25;
   public static void main(String args[]) {
      Demo obj = null;
      System.out.println(obj.age);
      System.out.println(obj.name);
   }
}

运行时异常

Exception in thread "main" java.lang.NullPointerException
   at july_set3.Demo.main(Demo.java:11)

根据Java文档,如果尝试以下操作,则会发生NullPointerException:

  • 使用null对象调用方法(实例方法)。
  • 访问、修改或打印null值的字段(对象)。
  • 尝试访问(打印/在语句中使用)null值的长度。
  • 抛出null值。
  • 访问或修改null值的元素/槽。

数组中的NullPointerException

在Java中,数组与类一样是引用类型,因此,发生NullPointerException的情况几乎相似。在使用数组时,会发生NullPointerException:

  • 如果您尝试访问尚未初始化(为null)的数组的元素。
public class Demo {
   public static void main(String args[]) {
      int myArray[] = null;
      System.out.println(myArray[5]);
   }
}

运行时异常

Exception in thread "main" java.lang.NullPointerException
   at july_set3.Demo.main(Demo.java:6)
  • 如果您尝试获取尚未初始化(为null)的数组的长度。
public class Demo {
   public static void main(String args[]) {
      int myArray[] = null;
      System.out.println(myArray.length);
   }
}

运行时异常

Exception in thread "main" java.lang.NullPointerException
   at july_set3.Demo.main(Demo.java:6)
  • 如果您尝试在尚未初始化(为null)的数组上调用任何方法。
public class Demo {
   public static void main(String args[]) {
      int myArray[] = null;
      System.out.println(myArray.toString());
   }
}

运行时异常

Exception in thread "main" java.lang.NullPointerException
   at july_set3.Demo.main(Demo.java:6)

更新于:2020年7月2日

3K+ 次浏览

启动您的职业生涯

通过完成课程获得认证

开始学习
广告