JAVA报错Exception in thread “main” java.lang.NullPointerException
我在编写一个需要使用对象数组的代码发现了这个问题。
情况是:我在定义完一个对象数组后,打算给数组的各个元素对象赋值时,出现了报错
在这里插入代码片 Exception in thread "main" java.lang.NullPointerException at 对象数组.Str.main(Str.java:11)
出现问题的原因:
因为在我们定义的对象数组中,每一个元素都是一个对象,既然是对象肯定就要分配内存啊!部分人忽略了这个问题,所以才有了上面的错误。
解决方法:
给对象数组中的每一个元素对象分配内存
操作:对象[i]=new 对象的类名();
举例:我自己的例子
1.我定义一个类,类名为People,类里面只有一个变量age
2.我再定义了一个Peopled的对象数组,长度为5个元素
People [] young=new People[5];
3.接下来我给对象数组中的每一个元素对象分配内存
for(int i=0;i<5;i++) {
young[i]=new People(); //分配内存
young[i].age=a[i]; //给People数组中的每个元素赋值
}
问题解决了!
下面是具体代码
没有修改之前的代码:
public class Str {
public static void main(String[] args) {
int [] a= {16,17,18,19,18};
People [] young=new People[5];//创建一个对象数组
for(int i=0;i<5;i++) {
young[i].age=a[i]; //给People数组中的每个元素赋值
}
for(int i=0;i<5;i++) { //检验结果
System.out.print(young[i]);
}
}
}
class People{
int age;
}
修改后的代码:
package 对象数组;
public class Str {
public static void main(String[] args) {
int [] a= {16,17,18,19,18};
People [] young=new People[5];//创建一个对象数组
for(int i=0;i<5;i++) {
young[i]=new People(); //给每个元素分配内存
young[i].age=a[i]; //给People数组中的每个元素赋值
}
for(int i=0;i<5;i++) { //检验结果
System.out.print(young[i].age+",");
}
}
}
class People{
int age;
}
运行结果:
16,17,18,19,18,