当前页面: 开发资料首页 → J2ME 专题 → 数组不能这么使用吗?
数组不能这么使用吗?
摘要: 数组不能这么使用吗?
public class WPlane {
WPoint ps[];
int p_num;
WLine lines[];
int line_num;
public WPlane() {
create();
}
public void create(){
ps = new WPoint[10];
lines = new WLine[10];
ps[0].x = 5;
ps[0].y = 0;
ps[1].x = 5;
ps[1].y = 5;
ps[2].x = 0;
ps[2].y = 5;
ps[3].x = 5;
ps[3].y = 5;
lines[0].fromP = 0;
lines[0].toP = 1;
lines[1].fromP = 2;
lines[1].toP = 3;
line_num = 2;
}
}
为何会出现如下错误?
Unable to create MIDlet wmdPack.MIDlet1
java.lang.NullPointerException
at wmdPack.WPlane.create(+25)
at wmdPack.WPlane.
(+8)
at wmdPack.LowEventHandleCanvas.(+12)
at wmdPack.MIDlet1.(+24)
at java.lang.Class.runCustomCode(+0)
at com.sun.midp.midlet.MIDletState.createMIDlet(+19)
at com.sun.midp.midlet.Selector.run(+22)
//////////////////////
数组不能这么使用吗?
ps[0].x = 5;
可以这么用,但是,你在new的时候只是new了存放10个WPoint对象的数组,但是数组内部的具体对象是空的,所以报空指针,应该:
WPoint w = new WPoint();
ps[0] = w;
在做上面的操作就没有问题了
没有一次性存放10个元素的方法吗?
比如说:
int w[] = new int[10];
这个操作可以,但是为何下面的不可以呢?
WPoint ps[] = new WPoint[10];
如果改成这样也不行呀?
WPoint [] ps = new WPoint[10];
ps = new WPoint[10];
java.util.Arrays.fill(ps, new WPoint());//数组中每个元素都填充 相同引用元素
for(int i=0, len=ps.length; i ps[i] = new WPoint();
}
我明白了,对象类 的 new Obj[] ,实际上是分配数组空间,但是不是对象空间。
只有 new Obj() 才是真正的分配实际的对象啊!
不知道这么说对不对?
对,就是这样!
只有new XX()才能真正的实例化变量