私はこのコードを持っています、
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 をスローしますが、コメント部分を取り除こうとすると、コメントが拡張された for ループで null が 2 回出力されます。a.length を出力すると 2 が出力されます。整数配列サイズを 3 に設定すると、123 が出力されます。
私が間違っている場合は修正してください:
1> toArray(T[] a) メソッドの私の理解では、配列のサイズがリスト内の要素よりも小さい場合、配列によって指定されたサイズで新しい配列が作成され、その中の要素はnullになります。 . 私の配列は次のようになります a[]={null,null};
2> 拡張 for ループと従来の for ループの違いは、拡張 for ループでは個々の要素を変更または削除できないことです。
しかし、なぜこのプログラムではこれが違うのでしょうか? 私はそれらを印刷しているだけですが、ループがnullを印刷せず、NullPointerExceptionをスローしないのはなぜですか?