BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / java / #26955同步于 2013/9/21
该镜像源已超过 30 天没有更新,可能在源站已被删除。
Java机器人发帖

求问:一个类中定义了另一个类的数组对象,初始化后还是NULL是

leeshell
2013/9/21镜像同步14 回复
定义了两个类,site和percolate 在percolate类中定义了site类的对象数组grid,并调用site的构造函数初始化这个数组。 class percolate { private site[] grid[]; for(int index=0; index<n; index++) grid[index] = new site(); } 我单步调试时发现,grid在初始化后还是null,而且我只要一试图改变grid中某个元素的值,就溢出。 这怎么回事呀?求解答
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
aiquestion机器人#1 · 2013/9/21
class percolate { private site[] grid[]; //这个地方可以这么写么?eclipse环境下会编译错误。 for(int index=0; index<n; index++) grid[index] = new site(); } 因为lz只声明了一个grid的名字的site[]的引用,这时候grid是null的,grid只是一个引用。还需要new一个引用的数组来存储所有的site的引用。 class percolate { private site[] grid=new site[100]; { for(int index=0; index<100; index++) grid[index] = new site(); } } 【 在 leeshell 的大作中提到: 】 : 定义了两个类,site和percolate : 在percolate类中定义了site类的对象数组grid,并调用site的构造函数初始化这个数组。 : class percolate : ...................
tdanieln机器人#2 · 2013/9/21
数组要初始化之后才能使用,否则就是一个null指针,只有在初始化(new)之后,才能指向堆上的空间。 看你的意思,是想用动态数组吧,考虑下用容器吧,简单点的话,就是把grid声明成ArrayList<E> grid 【 在 leeshell 的大作中提到: 】 : 定义了两个类,site和percolate : 在percolate类中定义了site类的对象数组grid,并调用site的构造函数初始化这个数组。 : class percolate : ...................
tdanieln机器人#3 · 2013/9/21
还有啊,我咋记得数组能只能存基本类型涅。。 【 在 leeshell 的大作中提到: 】 : 定义了两个类,site和percolate : 在percolate类中定义了site类的对象数组grid,并调用site的构造函数初始化这个数组。 : class percolate : ...................
zishi机器人#4 · 2013/9/21
private site[] grid[]; 这句话还真没见过诶,撸主,开眼见了。。
leeshell机器人#5 · 2013/9/21
多谢~ 不过我这串代码: for(int index=0; index<100; index++) grid[index] = new site(); 不是已经在给这个数组进行初始化了吗? 为啥初始化以后还是NULL呢? 【 在 aiquestion 的大作中提到: 】 : class percolate : { : private site[] grid[]; //这个地方可以这么写么?eclipse环境下会编译错误。 : ...................
leeshell机器人#6 · 2013/9/21
可是我已经在下面的代码里初始化了呀,可是还是NULL for(int index=0; index<100; index++) grid[index] = new site(); 我会尝试用容器的 多谢~ 【 在 tdanieln 的大作中提到: 】 : 数组要初始化之后才能使用,否则就是一个null指针,只有在初始化(new)之后,才能指向堆上的空间。 : 看你的意思,是想用动态数组吧,考虑下用容器吧,简单点的话,就是把grid声明成ArrayList<E> grid :
leeshell机器人#7 · 2013/9/21
可以存储对象吧,我在JAVA核心技术里有看到创建对象数组的呀 【 在 tdanieln 的大作中提到: 】 : 还有啊,我咋记得数组能只能存基本类型涅。。
leeshell机器人#8 · 2013/9/21
嘿嘿 初学JAVA 见笑了 【 在 zishi 的大作中提到: 】 : private site[] grid[]; 这句话还真没见过诶,撸主,开眼见了。。
dinglei8908机器人#9 · 2013/9/21
private site[] grid[]; 话说我也是第一次见这么写。。。 按楼主的意思应该是 private site[] grid; 吧 而且数组在声明的时候不是应该指定长度吗 例如 private site[] grid = new site[100];