问题描述
解决方案
一楼说的对,一般顺序为(这三者):变量,构造器,方法,当int n;系统默认n=0,所以初始化时b的长度等于0。我知道你想问的是:t.b.length,不是应该是通过t这个对象吗,但是数组一旦初始化长度就不能改了,所以导致打印输出时为0,懂了吧。
解决方案二:
因为一个对象初始化,他的成员变量要先于函数执行,构造函数也不例外,b是成员变量,初始化b的时候n还等于0
解决方案三:
你在成员变量和构造方法前都打个断点debug一下,你就看到执行顺序了
解决方案四:
C++数组初始化的问题
关于数组的初始化问题!
Java对象数组初始化与NullPointerException问题
解决方案五:
很好很强大谁打大是大是大的
解决方案六:
应该将数组的赋值放到构造方法里。否则,这个数组的赋值是在构造方法之前。
解决方案七:
你执行main方法时它不会执行boolean [] b= new boolean[n] 你可以在int n;这里打断点执行下就知道了。
解决方案八:
编译时,对象test进行了初始化,初始化成员变量n和b,此时n为0,则b的长度也就为0. 运行时,为成员变量n赋值,但b的长度依旧不变,所以会出现上面的错误。可以参考4楼的,重新试一下
解决方案九:
一般不会这样给动态数组赋值,这样就会出现你这个“错误”。
将动态数组的初始化放到构造方法中,而不是用作类变量使用,类变量比你的构造方法要先运行。可以看先下面的链接。
http://blog.csdn.net/tongyi55555/article/details/46627415
解决方案十:
虽然你在构造test的时候传入数值,但是程序执行main方法的时候不会执行到数组初始化代码片段,非要这样赋值可以将数据代码放入到构造函数里面来初始化;还有java 类命名规范是首字母应大写。