查看API,
toArray参数的说明:存储此 collection 元素的数组(如果其足够大);否则,将为此分配一个具有相同运行时类型的新数组。

解决方案 »

  1.   

    你的代码里面字符串数组就没赋值,怎么会打印出来A,B,C,D? 
      

  2.   

    String atr[];这样的语句只是定义一个指向String类型数组的一个引用,它不管自己指向的数组引用的大小。
      

  3.   

    String atr[]=listc.toArray(atr);这种方式获取它返回的数组有一个好处就是你也许不知道他返回的数组有多大。
    如果你用String atr[]=new String[1]的方式,那么他长度是10,你只给了5的长度就会出下标越界的异常,如果你给了20,那就浪费了10个位置的长度。
    这就是两种方式的区别。
    另外我不知道你那个listc是个什么的对象,所以不好判断为什么会输出这些。
    猜测应该是你那个返回的数组就是个长度为1的字符串数组,然后这个字符串就是"ABCDE";
    其实也很好判断,你这个System.out.println();输出语句他会换行,你的ABCDE如果是在一行输出的那么就是这个字符串只有一个,值就是"ABCDE",应该不可能是在五行输出的。
      

  4.   

    谁告诉你 String atr[]=new String[1];这样就是分配了一个内存空间?