English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

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);
   }
}

runtime exception

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

Java 문서에 따르면, NullPointerException을 시도하려고 할 때-

  • 使用空对象调用a方法(实例)。

  • 访问,修改,打印空值(对象)的字段。

  • 尝试访问(打印/在语句中使用)空值的长度。

  • 抛出一个空值。

  • 访问或修改具有空值的元素/插槽。

如果是数组,则为NullPointerException

在Java数组中,引用类型就像类一样,因此,发生NullPointerException的场景几乎相似。使用数组时,发生NullPointerException-

  • 如果尝试访问尚未初始化的数组的元素(为null)。

public class Demo {
   public static void main(String args[]) {
      int myArray[] = null;
      System.out.println(myArray[5
   }
}

runtime exception

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);
   }
}

runtime exception

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());
   }
}

runtime exception

Exception in thread "main" java.lang.NullPointerException
   at july_set3.Demo.main(Demo.java:6)
좋아할 만한 것