1. 程式人生 > >JAVA物件陣列的初始化

JAVA物件陣列的初始化

問題如下:

class FileStruct{

       int intPara;

       FileStruct(){

            intPara=0;

       }

       public void setintPara(int i){

            intPara=i;

       }

       public int getintPara(){

            return intPara;

       }

}



class Read{

        public void main(String[] args){

               FileStruct[] fs=new
FileStruct[10]; for(int i=0;i<10;i++) System.out.println(fs[i].getintPara); }

此時程式會丟擲異常:java.lang.NullPointerException

在以上程式中已存在兩個錯誤:

  • 對陣列的初始化工作沒有結束

  • 在類FileStruct中沒有將構造器函式公有化

錯誤原因:
1. 在Java中對非基本資料初始化時,必須使用new。在使用new建立陣列後,此時陣列還是一個引用陣列。只有再建立新的物件,並把物件賦值給陣列引用,到此初始化結束。

  1. 在以上程式中如果再使用new建立物件對陣列引用賦值,仍會丟擲異常:The constructor FileStruct() is not visible

基於此,以上程式應改為:

class FileStruct{

       int intPara;

       public FileStruct(){

            intPara=0;

       }

       public void setintPara(int i){

            intPara=i;

       }

       public int getintPara
(){ return intPara; } } class Read{ public void main(String[] args){ FileStruct[] fs=new FileStruct[10]; for(int j=0;j<10;j++) fs[j]=new FileStruct(); for(int i=0;i<10;i++) System.out.println(fs[i].getintPara); }

轉載自error