日期:2014-05-20  浏览次数:20789 次

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]);

我记得好像没什么区别吧,
当然我也可能理解错了。。。


------解决方案--------------------
探讨

new String[0] 申请了0个对象?
new String[100] 申请了100个对象?

------解决方案--------------------
探讨
new String[0] 申请了0个对象?
new String[100] 申请了100个对象?

------解决方案--------------------
有区别的。
比如list元素个数1,字符串数组初始化个数3,那么访问访问第2个元素返回null,
比如list元素个数3,字符串数组初始化个数1,那么访问访问第2个元素报错。
看toArray方法的定义。


探讨

String[0]确实不好理解,
我觉得这是sun设计的一个缺陷,
在这里

return(String[])list.toArray(new String[0]);
return(String[])list.toArray(new String[100]);
return(String[])list.toArray(new String[500]);

我记得好像没什么区别吧,……

------解决方案--------------------
探讨

new String[0] 申请了0个对象?
new String[100] 申请了100个对象?

------解决方案--------------------
学习了
------解决方案--------------------
return list.toArray(new String[0]);//这种方式效率最高
return list.toArray(new String[100]);//浪费了100个地址空间,以及申请空间的时间
return list.toArray(new String[500]);//浪费了500个地址空间,以及申请空间的时间
new String[0]就是起一个模板的作用
------解决方案--------------------
探讨

有区别的。
比如list元素个数1,字符串数组初始化个数3,那么访问访问第2个元素返回null,
比如list元素个数3,字符串数组初始化个数1,那么访问访问第2个元素报错。
看toArray方法的定义。

return(String[])list.……

------解决方案--------------------
我也不太明白????????