我写了下面这个程序,目的是为定义如何循环类变量。下面的程序编译通过了,可是运行却出现了这样的错误“Exception in thread "main" java.lang.NullPointerException at Student.main(Student.java:11)
”。
恳请高手指教,不盛感激! public class Student {
void display(){
System.out.println("welcome!");
}
public static void main(String[] args) {
int i;
Student a[]= new Student[5];
for(i=0;i<5;i++)
a[i].display();
}
}
”。
恳请高手指教,不盛感激! public class Student {
void display(){
System.out.println("welcome!");
}
public static void main(String[] args) {
int i;
Student a[]= new Student[5];
for(i=0;i<5;i++)
a[i].display();
}
}
解决方案 »
- Java核心编程的例题,为什么总报数组下表溢出
- 对位运算有兴趣的朋友来看看,是不是有地方算错了
- 新手求助
- java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).
- 如何实现java 程序在后台运行,象qq一样运行在任务栏?
- 求解歌德巴赫猜想
- 关于IO操作,文件路径问题。
- 为什么用"package"无法使生成的class文件到我指定的文件夹中?
- 怎么现在不能使用搜索了??????
- 讨论:关于变量传递的有关问题……
- 怎么样理解工程模式,内部类,匿名类等?
- 高手请赐教,小弟急求。。。。。。
你在这里只声明了一个数组,而此时数组中的元素为null
下面你就a[i].display();
相当于null.display(),这当然会出错。
1, default value for primitive variables;
2, default value for reference variables;
3, default value for array elements after array declaration and initialization;
Student a[]= new Student[5];
这个语句难道不是定义了类Student的五个实例a[0]到a[4]吗?如果不是那应该怎样改正呢?
我写这个简单的程序目的的不想这样烦琐定义类Student的对象:
Student stu1=new Student();
Student stu2=new Student();
....
Student stun=new Student();
希望大家不吝教导!
for(int i=0; i<5; i++) {
a[i] = new Student();
a[i].display();
}JAVA中的数组初始化时,所有元素都是null,访问前必须逐个赋值。
这个语句难道不是定义了类Student的五个实例a[0]到a[4]吗?如果不是那应该怎样改正呢?
我写这个简单的程序目的的不想这样烦琐定义类Student的对象:
Student stu1=new Student();
Student stu2=new Student();
....
Student stun=new Student();
希望大家不吝教导!
-----------------------------Student数组的定义和Student对象的定义是两回事情
Student a[]= new Student[5];只是定义了一个大小为5的数组,数组元素的类型为Student,但每个元素具体是什么,仅凭这句话并不知道,还需要单个指定,就像楼上的代码那样。这个可能不好理解,那换个例子:
int[] ia = new int[5];
这句话只是定义了一个长度为5的整型数组,但数组元素的值是什么?你并没有给数组元素赋值,所以现在数组元素“没有值”。但Java中对于这样的情况会给个初始值,这个例子中,如果你紧接着输入ia每个元素的值,会发现都是0,这就是默认值。而对于你帖子中的例子,默认值是null。