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+ 次瀏覽

啟動您的職業生涯

透過完成課程獲得認證

開始學習
廣告
© . All rights reserved.