我有此代码,差()使用增强的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