JAVA物件陣列的初始化
阿新 • • 發佈:2019-01-09
問題如下:
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建立陣列後,此時陣列還是一個引用陣列。只有再建立新的物件,並把物件賦值給陣列引用,到此初始化結束。
- 在以上程式中如果再使用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