为什么在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]。为什么运行第一个会报错?
展开
展开全部
原因很简单,因为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],就会报数数组越界异常了
追问
成员变量比构造方法跟先执行吗?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询