public class Test{ int tour; public static void cs(Test a[]) { for (int i = 0; i < a.length; i++) { a[i]=new Test();//此處為解決代碼 a[i].tour=i; } }
之前只是把對象數組作為形參時,然后Eclipse報出Exception in thread "main" java.lang.NullPointerException的異常,后來查了一下,是因為對象數組的每一個元素還沒有分配空間,所以添加完代碼以后,此方法正常運行。
總結:1.基本類型數組用new運算之后,就直接給每個數組元素分配了空間,而我們自定義的對象數組屬於引用型數組,所以在使用時,需要用for循環對每個數組元素進行new運算, 分配空間。
2.而String類型數組也是引用型數組,但是庫里有,所以Eclipse默認它為“基本類型”。(在這里我糾正一下,String類型數組元素也要進行一下new運算,才有新的內存空間,不然就是空引用)
補充:上面的解決辦法繼續優化,即為
public class Test{ int tour; public static void cs(Test a[]) { for (int i = 0; i < a.length; i++) { a[i].tour=i; } public static void main (String[] args){ Test[] c =new Test[5]; for(int i=0;i<c.length;i++)//直接在對象數組創建后,再另外為每個對象數組單個元素通過 c[i]=new Test();//new運算分配新的動態內存空間; } }
上述說明只代表個人認知,如果與實際不符,還望前輩指正。