A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 刘海陆 中级黑马   /  2013-6-5 21:55  /  1441 人查看  /  6 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 刘海陆 于 2013-6-9 12:53 编辑

下面的代码,为什么红色的报错呢,不都是传递char[] 吗??               
                Class<String> clazz =  String.class;
                Constructor<String> constructor = String.class.getConstructor(char[].class);
                String s = constructor.newInstance(new char[]{'张','飒'});
                String s1 = constructor.newInstance({'张','飒'});
                System.out.println(s);

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

6 个回复

倒序浏览
先按对的来吧,我也没看出来。。。。。坐等高人吧
回复 使用道具 举报
yin1031468524 来自手机 中级黑马 2013-6-8 10:22:36
藤椅
char是一个字节的吧!你这中字符占两字节了,
回复 使用道具 举报
yin1031468524 发表于 2013-6-8 10:22
char是一个字节的吧!你这中字符占两字节了,

char是2Byte,16bit
回复 使用道具 举报
毕老师的视频里好像提到过这个问题,要把数组封装成一个对象,当时听得糊里糊涂得也是。后头重看下视频。
回复 使用道具 举报
本帖最后由 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;

评分

参与人数 1技术分 +1 收起 理由
袁梦希 + 1 很给力!

查看全部评分

回复 使用道具 举报
谢谢了谢谢了谢谢了谢谢了谢谢了谢谢了谢谢了谢谢了谢谢了谢谢了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马