关于java创建类数组的问题(本人菜鸟)

cj0412 2005-05-27 09:11:42
class Bullet
{

public int bu_x;
public int bu_y;
public int bu_type;
public boolean bu_exist;
Bullet()
{
bu_x = 0;
bu_y =0;
bu_type =0;
bu_exist = false;
}
}
类原形
在构造函数中写
Bullet[] bullet = new Bullet[100];
bullet[0].bu_type = 10;
运行的时候就
java.lang.NullPointerException
哪位朋友帮忙解决一下 谢谢了
...全文
3592 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
plusir 2005-05-28
  • 打赏
  • 举报
回复
数组是对象,你new一下:Bullet[] bullet = new Bullet[100];
但是数组里面的元素也是对象,你用之前为什么不去new呢

对于数组元素的new,建议到用的时候再去new。当然也可以事先全部new出来,
可以写个for循环去new
for( int i = 0; i < bullet.length; ++i )
buttle[i] = new Bullet() ;

或者利用java.util.Arrays的静态方法去填充:
Arrays.fill( buttle, new Bullet() ) ;
gjh507 2005-05-28
  • 打赏
  • 举报
回复
必须对每一个数组进行实例化,今天刚碰到这个问题
  • 打赏
  • 举报
回复
学习一下!
  • 打赏
  • 举报
回复
Bullet[] bullet = new Bullet[100];//在您定义一个数组的时候,首先要对数组初始化,也就是数组的总个数进行定义一个取值范围
bullet[0] = new Bullet();//接着就是要对数组的元素初始化,只有当你为该数组的元素分配了内存地址后才能对它进行操纵!
yaray 2005-05-27
  • 打赏
  • 举报
回复
Bullet[] bullet = new Bullet[100];//仅向JVM申请了100个Bullet对象所需要的内存空间,并没有实例化对象的产生

// 实例化数组
for(int i=0, len=bullet.length; i<len; i++){
bullet[i] = new Bullet();
}

// 接下来就可以使用这个数组了.
bullet[0].bu_type = 10;
//另:Java普通变量最好不要用下划线作为分隔(仅静态常量用下划线作为分隔)
harbor1981 2005-05-27
  • 打赏
  • 举报
回复
up
ylgw123456789 2005-05-27
  • 打赏
  • 举报
回复
学习中。
evil_nowt 2005-05-27
  • 打赏
  • 举报
回复
bullet[0] = new Bullet()
创建实例对象先
liuke209 2005-05-27
  • 打赏
  • 举报
回复
JAVA中对象使用前必须实例化。
Bullet[] bullet = new Bullet[100];//它只帮你申请了对象数组在内存中空间大小而已,但它里面的对都是NULL,所以你想使用这个数组存放Bullet对象,你必须将每个对象实例化。也就是
bullet[0] = new Bullet() ;

然后你才能操作对象;
在bullet[0].bu_type = 10;
ojhsky 2005-05-27
  • 打赏
  • 举报
回复
楼上的能不能帮我解决一下我的问题啊?
io(王飞) 2005-05-27
  • 打赏
  • 举报
回复
java数组的每一个元素都需要new
ojhsky 2005-05-27
  • 打赏
  • 举报
回复
在bullet[0].bu_type = 10;
前加上:
bullet[0] = new Bullet() ;

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧