【java】JAVA数组初始化,
分享于 点击 22709 次 点评:78
【java】JAVA数组初始化,
数组初始化问题
执行下面的代码时:
class Wheel{
public void display(int d){
System.out.println("Wheel["+d+"]");
}
}
public class Car {
private Wheel[] wheel=new Wheel[4];
private static int[] con=new int[4];
public Car() {
}
public static void main(String[] args) {
Car car=new Car();
System.out.println(con[2]);
car.wheel[0].display(0);
}
}
结果如下
0
Exception in thread “main” java.lang.NullPointerException
at Car.main(Car.java:16)
分析如下
错误定位在:
car.wheel[0].display(0)
错误信息是:空指针异常
而同样都是数组,同样的初始化,int类型的con却可以直接调用,wheel却不可以。由此发现基本类型数组和非基本类型数组在初始化时存在差异:
基本类型的数组如果没有赋初值的话,java会根据它的类型给一个默认的初值。非基本类型的数组存放的是引用类型,只有当生成对象后,引用才指向对象,否则引用为null。
说明:
private Wheel[] wheel=new Wheel[4];
此时还没生成对象,引用为空,所以会报NoPointerException。
更正
class Wheel{
public void display(int d){
System.out.println("Wheel["+d+"]");
}
}
public class Car {
private Wheel[] wheel=new Wheel[4];
private static int[] con=new int[4];
public Car() {
for(int i=0;i<4;i++){
wheel[i]=new Wheel();
}
}
public static void main(String[] args) {
Car car=new Car();
System.out.println(con[2]);
car.wheel[0].display(0);
}
}
更正后的运行结果
0
Wheel[0]
相关文章
- 暂无相关文章
用户点评