java ListArray对象的语法不明白: new String[0] 方法中:{ ArrayList list=new ArrayList() ............ return(String[])list.toArray(new String[0]);}参数 (new String[0])是干什么用的,怎理解String[0] 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 return(String[])list.toArray(new String[0]); 肯定方法定义的返回类型是 String[]list.toArray(new String[0]); 就是在做类型转换还有不明白的地方吗? new String[0] 这是什么含义呢,[0]表示什么? 只是 一个类型标示,用来告诉toArray方法具体转化成什么类型。list.toArray(new String[0]);//转化成String数组list.toArray(new int[0]);//转化成int数组 <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] -------长度为0new String[100] ------长度为100,可以存100个String对象这里的用new String[0]只是为了指定函数的形参数,最终返回的String[]的长度是由你的list存储内容的长度决定了。 toArray<T> T[] toArray(T[] a)返回以正确顺序包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。遵守 Collection.toArray(Object[]) 方法的常规协定。 指定者:接口 Collection<E> 中的 toArray参数:a - 要存储列表中元素的数组,如果它足够大的话;否则为此目的分配一个运行时类型相同的新数组。 返回:包含列表中元素的数组。 抛出: ArrayStoreException - 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型。 NullPointerException - 如果指定数组为 null//我觉得doc写的很清楚了 有区别的。比如list元素个数1,字符串数组初始化个数3,那么访问访问第2个元素返回null,比如list元素个数3,字符串数组初始化个数1,那么访问访问第2个元素报错。看toArray方法的定义。 不对吧,最终返回的String[]的长度是由string[]的length和list的size共同决定,如果length大于size则取length,如果length小于size就取size。有点绕...源码很清楚 return list.toArray(new String[0]);//这种方式效率最高return list.toArray(new String[100]);//浪费了100个地址空间,以及申请空间的时间return list.toArray(new String[500]);//浪费了500个地址空间,以及申请空间的时间new String[0]就是起一个模板的作用 悟出来了:ArrayList.toArray()需要返回String [] “串对象数组” 类型,要求调用参数也必须是 “串对象数组”,new String[] 就是生生一个“串对象数组”,[0]表示元素个数为零。谢谢了。 不对吧,那list.toArray(new String[0]);字符串数组声明为0,就要一直报错了 List能听你命令转成某种固定类型的数组,但是你不告诉他转成什么类型,它就很傻比不知道怎么转,所以你得创造个样例出来告诉它,你给我转成这种类型,它就知道了。new String[0]就是你创造的样例,这个0无所谓,放0只是表示new出来的样例是空数组少占点空间。至于String[] aa = list.toArray(new String[0]); 会报错,是因为list虽然知道我要转出来的是String数组,但是编译器不知道list.toArray()返回的是什么数组啊,所以你得强转下..... 哦,如果是0,不报错,只是个数元素个数是list的个数。 【大神求助】用java 怎么让excel根据行列查找一个值 求大神解析xml 请问要怎样将整个屏幕做刷新(而不是只刷新自己写的程式)? 100分求一有关正则表达式程序~~~~ 请问内存泄漏是什么概念 我想实现让java程序在linux下自动运行,请问应该在rc.local文件中如何输入正确的启动命令? java set 和get 怎么使用assert 这个关键字? instanceof怎么用啊? VJ++ & Java oracle数据库问题 java se 带惨方法这部分怎么去理解
list.toArray(new String[0]); 就是在做类型转换
还有不明白的地方吗?
list.toArray(new String[0]);//转化成String数组list.toArray(new int[0]);//转化成int数组
泛型
会返回你一个list长度的String 类型的数组
我觉得这是sun设计的一个缺陷,
在这里return(String[])list.toArray(new String[0]);
return(String[])list.toArray(new String[100]);
return(String[])list.toArray(new String[500]);我记得好像没什么区别吧,
当然我也可能理解错了
new String[100] 申请了100个对象?
new String[100] ------长度为100,可以存100个String对象
这里的用new String[0]只是为了指定函数的形参数,最终返回的String[]的长度是由你的list存储内容的长度决定了。
<T> T[] toArray(T[] a)返回以正确顺序包含列表中所有元素的数组;返回数组的运行时类型是指定数组的运行时类型。遵守 Collection.toArray(Object[]) 方法的常规协定。 指定者:
接口 Collection<E> 中的 toArray
参数:
a - 要存储列表中元素的数组,如果它足够大的话;否则为此目的分配一个运行时类型相同的新数组。
返回:
包含列表中元素的数组。
抛出:
ArrayStoreException - 如果指定数组的运行时类型不是此列表中每个元素的运行时类型的超类型。
NullPointerException - 如果指定数组为 null//我觉得doc写的很清楚了
比如list元素个数1,字符串数组初始化个数3,那么访问访问第2个元素返回null,
比如list元素个数3,字符串数组初始化个数1,那么访问访问第2个元素报错。
看toArray方法的定义。
不对吧,最终返回的String[]的长度是由string[]的length和list的size共同决定,如果length大于size则取length,如果length小于size就取size。有点绕...源码很清楚
return list.toArray(new String[100]);//浪费了100个地址空间,以及申请空间的时间
return list.toArray(new String[500]);//浪费了500个地址空间,以及申请空间的时间
new String[0]就是起一个模板的作用
ArrayList.toArray()需要返回String [] “串对象数组” 类型,
要求调用参数也必须是 “串对象数组”,
new String[] 就是生生一个“串对象数组”,[0]表示元素个数为零。
谢谢了。
不对吧,那list.toArray(new String[0]);字符串数组声明为0,就要一直报错了
哦,如果是0,不报错,只是个数元素个数是list的个数。