java ListArray对象的语法不明白: new String[0]
方法中:
{
ArrayList list=new ArrayList()
............
return(String[])list.toArray(new String[0]);
}
参数 (new String[0])是干什么用的,怎理解String[0]
------解决方案-------------------- return(String[])list.toArray(new String[0]); 肯定方法定义的返回类型是 String[]
list.toArray(new String[0]); 就是在做类型转换
还有不明白的地方吗?
------解决方案--------------------只是 一个类型标示,用来告诉toArray方法具体转化成什么类型。
list.toArray(new String[0]);//转化成String数组
list.toArray(new int[0]);//转化成int数组
------解决方案--------------------[0]是数组长度为0啊
------解决方案--------------------<T> T[] toArray(T[] a);
泛型
会返回你一个list长度的String 类型的数组
------解决方案--------------------<T> T[] toArray(T[] a)需要一个T[] a,new String[0]相当于开辟了一个长度为0的String[],并且指定了泛型。这样函数的调用是将list转换了一个String的数组。
------解决方案--------------------new String[0] 就是new出一个数组 [0] 是长度标示
------解决方案--------------------String[0]确实不好理解,
我觉得这是sun设计的一个缺陷,
在这里
return(String[])list.toArray(new String[0]);
return(String[])list.toArray(new String[100]);
return(String[])list.toArray(new String[500]);
我记得好像没什么区别吧,
当然我也可能理解错了。。。
------解决方案--------------------
------解决方案--------------------
------解决方案--------------------有区别的。
比如list元素个数1,字符串数组初始化个数3,那么访问访问第2个元素返回null,
比如list元素个数3,字符串数组初始化个数1,那么访问访问第2个元素报错。
看toArray方法的定义。
------解决方案--------------------
------解决方案--------------------学习了
------解决方案--------------------return list.toArray(new String[0]);//这种方式效率最高
return list.toArray(new String[100]);//浪费了100个地址空间,以及申请空间的时间
return list.toArray(new String[500]);//浪费了500个地址空间,以及申请空间的时间
new String[0]就是起一个模板的作用
------解决方案--------------------
------解决方案--------------------我也不太明白????????