本帖最后由 librazeng 于 2013-6-9 11:24 编辑
我查了半天,这实际上是个数组初始化的问题,没有初始化的数组是不能用的!
数组初始化上。new char[]{'张','飒'}当然没问题,肯定在堆里初始化了;
但写成这样{'张','飒'}是无法初始化的,数组常量必须写成char[] ch={'张','飒'}才能初始化。
char[] ch;
ch={'张','飒'};这样写也不能初始化。(错误提示:Array constants can only be used in initializers 数组常量仅能用于初始化)
数组常量仅能用于初始化,是不能作为Object参数传给newInstance(Object... initargs)方法的。
资料:
一位数组初始化
1)int[] a;//声明,没有初始化
2)int[] a=new int[5];//初始化为默认值,int型为0
3)int[] a={1,2,3,4,5};//初始化为给定值
4)int[] a=new int[]{1,2,3,4,5};//同(3)
int[] a=new int[5]{1,2,3,4,5};//错误,如果提供了数组初始化操作,则不能定义维表达式
5)int[] a;
a=new int[5];//正确,同(2)一样
int[] a;
a={1,2,3,4,5}; //错误,数组常量只能在初始化操作中使用,如(3)
6)int a[];
a[0]=1; //错误,因为数组没有初始化,不能赋值
a[1]=2;
|