为什么在JAVA中,成员属性数组 int a;int [] s=new int[a];然后在构造方

为什么在JAVA中,成员属性数组inta;int[]s=newint[a];然后在构造方法里赋予a=1。int[]s=newint[1]。为什么运行第一个会报错?... 为什么在JAVA中,成员属性数组 int a;int [] s=new int[a];然后在构造方法里赋予a=1。int [] s=new int [1]。为什么运行第一个会报错? 展开
 我来答
jingaita
2016-05-20 · TA获得超过777个赞
知道小有建树答主
回答量:526
采纳率:50%
帮助的人:341万
展开全部
原因很简单,因为private ini[] s=new int[a]比构造方法public shuzhu(int a){...}先执行,所以当你new shuzhu(1)的时候,先执行了private ini[] s=new int[a]这条语句,此时a还没赋值,而int类型的在声明时如果没有赋值,应该是默认初始化为0的,所以相当于数组s大小为0,尽管接着执行了构造方法时将a赋值为1了,但是此时数组s已经不会再次初始化了,所以对一个数组大小为0的数字s,想要输出他的第1个元素s[0],就会报数数组越界异常了
追问
成员变量比构造方法跟先执行吗?
sprayvoice
2016-05-20 · 超过20用户采纳过TA的回答
知道答主
回答量:114
采纳率:0%
帮助的人:19.3万
展开全部
s[0]没赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式