首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計綜合問答

Java 數組空指針異常:聲明數組未實例化元素對象

     編輯:程式設計綜合問答

問題代碼

Sinfo[] su = new Sinfo[n];  // 只分配了引用數組,每個元素為 null
su[i].name = cin.next();    // su[i] 為 null → NPE

內存圖解

su (引用) → [ null, null, null, ... ]  // 長度 n 的引用數組
                ↓  需要 new Sinfo() 分配對象
             Sinfo 對象 (name, age, grade)

修正:遍歷實例化每個元素

Sinfo[] su = new Sinfo[n];
for (int i = 0; i < n; i++) {
    su[i] = new Sinfo();  // 關鍵:為每個引用分配實例
    su[i].name = cin.next();
    su[i].age = cin.nextInt();
    su[i].grade = cin.nextInt();
}

對比:基本類型 vs 引用類型數組

類型聲明默認值是否需逐個 new
基本類型int[] a = new int[10];0否,直接賦值 a[i] = 5
引用類型Sinfo[] a = new Sinfo[10];null是,a[i] = new Sinfo() 後才能訪問字段

常見誤區

  • Sinfo[] su = new Sinfo[n]; 以為創建了 n 個對象,**實則只創建了 n 個 null 引用槽**。
  • 基本類型數組自動初始化為 0/false,引用類型**不自動實例化對象**。

總結

Java 引用類型數組聲明後元素全為 null,**使用前必須逐個 new 實例化**。修正循環中加 su[i] = new Sinfo(); 即可解決空指針異常。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved