import java.util.*;public class ArrayTest { public static void main(String[] args) {
// TODO Auto-generated method stub
String[] str = {"aa","bb","cc"};
int[] in = {1,2,3};
ArrayList str_arrayList = new ArrayList();
ArrayList int_arrayList = new ArrayList();
for(int i=0;i<str.length;i++)
{
str_arrayList.add(str[i]);
int_arrayList.add(in[i]);
}
String[] str1 = (String[])str_arrayList.toArray();
String[] in1 = (String[])int_arrayList.toArray();
String[][] s = {str1,in1};
System.out.println(s[0][0]);
}}编译无错
运行错误提示:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
at ArrayTest.main(ArrayTest.java:16)
// TODO Auto-generated method stub
String[] str = {"aa","bb","cc"};
int[] in = {1,2,3};
ArrayList str_arrayList = new ArrayList();
ArrayList int_arrayList = new ArrayList();
for(int i=0;i<str.length;i++)
{
str_arrayList.add(str[i]);
int_arrayList.add(in[i]);
}
String[] str1 = (String[])str_arrayList.toArray();
String[] in1 = (String[])int_arrayList.toArray();
String[][] s = {str1,in1};
System.out.println(s[0][0]);
}}编译无错
运行错误提示:
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object;
at ArrayTest.main(ArrayTest.java:16)
另外int_arrayList.add(in[i]);--放的是int型的String[] in1 = (String[])int_arrayList.toArray(); --int型要转成String 这个应该是不行的
这句编译都不能通过的
// TODO Auto-generated method stub
String[] str = {"aa","bb","cc"};
ArrayList str_arrayList = new ArrayList(); for(int i=0;i<str.length;i++)
{
str_arrayList.add(str[i]); }
String[] str1 = (String[])str_arrayList.toArray();
System.out.println(str1[0][0]);
}}代码改成这样还是不行啊 String[] str1 = (String[])str_arrayList.toArray();
这句话有问题。
String[] str1 = (String[])str_arrayList.toArray(new String[str_arrayList.size()]);
String[] str1 = (String[])str_arrayList.toArray();
可以这样做:
String[] str2 = new String[3];
System.arraycopy(str_arrayList.toArray(), 0, str2, 0, 3);
当然,String[] in1 = (String[])int_arrayList.toArray();就更不行了对于List里放基本数据类型的数据 像int double long,在JDK1.5后是可以的
叫autoboxing
还可以这样做:
String[] str1 = (String[])str_arrayList.toArray(new String[0]);