java ListArray对象的语法不明白: new String[0]

BCBPLC 2011-10-26 05:00:09

方法中:
{
ArrayList list=new ArrayList()
............
return(String[])list.toArray(new String[0]);
}

参数 (new String[0])是干什么用的,怎理解String[0]


...全文
1324 20 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
20 条回复
切换为时间正序
请发表友善的回复…
发表回复
g406824283 2011-10-28
  • 打赏
  • 举报
回复
[Quote=引用 17 楼 dongchao_mygirl 的回复:]

引用 12 楼 g406824283 的回复:

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

return(String[])list.……


不对吧,那list.toArray(new String[0]);字……
[/Quote]

哦,如果是0,不报错,只是个数元素个数是list的个数。
lacus87 2011-10-27
  • 打赏
  • 举报
回复
List能听你命令转成某种固定类型的数组,但是你不告诉他转成什么类型,它就很傻比不知道怎么转,所以你得创造个样例出来告诉它,你给我转成这种类型,它就知道了。

new String[0]就是你创造的样例,这个0无所谓,放0只是表示new出来的样例是空数组少占点空间。

至于String[] aa = list.toArray(new String[0]); 会报错,是因为list虽然知道我要转出来的是String数组,但是编译器不知道list.toArray()返回的是什么数组啊,所以你得强转下.....
yangyi8010 2011-10-26
  • 打赏
  • 举报
回复
我也不太明白????????
dongchao_mygirl 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 12 楼 g406824283 的回复:]

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

return(String[])list.……
[/Quote]

不对吧,那list.toArray(new String[0]);字符串数组声明为0,就要一直报错了
BCBPLC 2011-10-26
  • 打赏
  • 举报
回复
悟出来了:
ArrayList.toArray()需要返回String [] “串对象数组” 类型,
要求调用参数也必须是 “串对象数组”,
new String[] 就是生生一个“串对象数组”,[0]表示元素个数为零。
谢谢了。
小赖赖 2011-10-26
  • 打赏
  • 举报
回复
return list.toArray(new String[0]);//这种方式效率最高
return list.toArray(new String[100]);//浪费了100个地址空间,以及申请空间的时间
return list.toArray(new String[500]);//浪费了500个地址空间,以及申请空间的时间
new String[0]就是起一个模板的作用
孟祥月 2011-10-26
  • 打赏
  • 举报
回复
学习了
g406824283 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bcbplc 的回复:]

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

不对吧,最终返回的String[]的长度是由string[]的length和list的size共同决定,如果length大于size则取length,如果length小于size就取size。有点绕...源码很清楚
g406824283 2011-10-26
  • 打赏
  • 举报
回复
有区别的。
比如list元素个数1,字符串数组初始化个数3,那么访问访问第2个元素返回null,
比如list元素个数3,字符串数组初始化个数1,那么访问访问第2个元素报错。
看toArray方法的定义。


[Quote=引用 8 楼 flagiris 的回复:]

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

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

我记得好像没什么区别吧,……
[/Quote]
shaosijun2004 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bcbplc 的回复:]
new String[0] 申请了0个对象?
new String[100] 申请了100个对象?
[/Quote]
toArray
<T> T[] toArray(T[] a)返回以正确顺序包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。遵守 Collection.toArray(Object[]) 方法的常规协定。

指定者:
接口 Collection<E> 中的 toArray
参数:
a - 要存储列表中元素的数组,如果它足够大的话;否则为此目的分配一个运行时类型相同的新数组。
返回:
包含列表中元素的数组。
抛出:
ArrayStoreException - 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型。
NullPointerException - 如果指定数组为 null

//我觉得doc写的很清楚了
xiongyu2006 2011-10-26
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 bcbplc 的回复:]

new String[0] 申请了0个对象?
new String[100] 申请了100个对象?
[/Quote]
new String[0] -------长度为0
new String[100] ------长度为100,可以存100个String对象
这里的用new String[0]只是为了指定函数的形参数,最终返回的String[]的长度是由你的list存储内容的长度决定了。
BCBPLC 2011-10-26
  • 打赏
  • 举报
回复
new String[0] 申请了0个对象?
new String[100] 申请了100个对象?
菖蒲老先生 2011-10-26
  • 打赏
  • 举报
回复
String[0]确实不好理解,
我觉得这是sun设计的一个缺陷,
在这里

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

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

nizhicheng 2011-10-26
  • 打赏
  • 举报
回复
new String[0] 就是new出一个数组 [0] 是长度标示
xiongyu2006 2011-10-26
  • 打赏
  • 举报
回复
<T> T[] toArray(T[] a)需要一个T[] a,new String[0]相当于开辟了一个长度为0的String[],并且指定了泛型。这样函数的调用是将list转换了一个String的数组。
shaosijun2004 2011-10-26
  • 打赏
  • 举报
回复
<T> T[] toArray(T[] a);
泛型
会返回你一个list长度的String 类型的数组
Acesidonu 2011-10-26
  • 打赏
  • 举报
回复
[0]是数组长度为0啊
liwenso 2011-10-26
  • 打赏
  • 举报
回复
只是 一个类型标示,用来告诉toArray方法具体转化成什么类型。
list.toArray(new String[0]);//转化成String数组

list.toArray(new int[0]);//转化成int数组
BCBPLC 2011-10-26
  • 打赏
  • 举报
回复
new String[0] 这是什么含义呢,[0]表示什么?
nizhicheng 2011-10-26
  • 打赏
  • 举报
回复
return(String[])list.toArray(new String[0]); 肯定方法定义的返回类型是 String[]
list.toArray(new String[0]); 就是在做类型转换
还有不明白的地方吗?

62,635

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧