我有此代碼,差()使用增強的for循環的方法和傳統的for循環
class Test
{
public static void main(String args[])
{
ArrayList<Integer> al=new ArrayList<>();
al.add(1);
al.add(2);
al.add(3);
Integer a[]=new Integer[2];
al.toArray(a);
for(int i:a)
System.out.println(i);
/*for(int i=0;i<a.length;i++)
System.out.println(a[i]);*/
}
}
上面代碼拋出的NullPointerException但如果我嘗試採取的註釋部分斷,並且評論增強爲循環它將打印null 2次。打印則爲a.length打印2.設置整數數組大小設置爲3將打印123
現在,糾正我,如果我錯了:
1>我的指定者的理解(T [] a)方法,如果數組的大小小於列表中的元素,考慮到這一點,將使用數組指定的大小創建新數組,其中的元素將爲空。我的數組應該看起來像這樣[] = {null,null};
2>增強for循環和傳統for循環之間的區別在於,您無法修改或刪除增強for循環中的單個元素。
但是,這個程序爲什麼會有所不同呢?我只是打印它們,爲什麼增強for循環不打印null並拋出NullPointerException?
你需要使用(一)',而不是在值傳遞指定者的'的返回值。在「參數」的文檔中註明:「a - 如果該集合的元素足夠大,將存儲此集合的元素的數組;否則,爲此分配了一個具有相同運行時類型的新數組」。 https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#toArray%28T[]%29 – msandiford