黑马程序员技术交流社区
标题:
关于程序中空指针异常的问题
[打印本页]
作者:
黑马王冬冬
时间:
2012-7-18 00:28
标题:
关于程序中空指针异常的问题
import java.util.*;
class student
{
private String name;
void setName(String name)
{
this.name = name;
}
}
class test
{
public static void main(String[] args)
{
student[] s = new student[1];
Scanner sc = new Scanner(System.in);
System.out.println("Enter the name of student: ");
s[0].setName(sc.next());
}
}
复制代码
以上代码运行时会出现异常信息,我大概已经明白原因所在,但还是理解的不太清楚,哪位同学能帮我细致的讲解一下吗?
作者:
丁二跃
时间:
2012-7-18 00:47
应该是 21行出错吧 s[0].setName(sc.next());
student[] s = new student[1];
你只是new了一个数组,这个数组里 应该放 student 对象, 但是现在数字里 还是空的 默认为null
你在21 行用 s[0] 其实就是null 对象 当然不能用来调用方法了
应先创建一个对象放入数组 : s[0] = new Student()
作者:
乞文超
时间:
2012-7-18 01:01
student[] s = new student[1];是相当于new了一个Student的数组,然而你在输入信息时,并没有添加对象,即s为空,所以会出现空指针异常
作者:
张世威
时间:
2012-7-18 01:52
import java.util.*;
class student
{
private String name;
void setName(String name)
{
this.name = name;
}
}
class test
{
public static void main(String[] args)
{
student[] s = new student[1];
Scanner sc = new Scanner(System.in);
System.out.println("Enter the name of student: ");
s[0].setName(sc.next());
}
}
1:你定义了一个数组, student[] s = new student[1],他的长度为1:就像你拿一个箱子出来,它里面只有一个可以装苹果的盒子。 这时候,箱子还是空的,什么都没有。
2、s[0] 代表箱子里面的一个盒子,s[0].setName(sc.next()),这句话就像你伸手到空箱子里面,把空盒子拿出来,给盒子里面的苹果取个名字,而苹果还没有放进去啊,哥们,你拿的是空气了。
3、自然报java.lang.NullPointerException 了,你可以在使用前,先 s[0]=new Student();
4、空指针异常告诉我们:要先劳动,在索取,不然你只能拿空气了。哥们,赶快往箱子里面装苹果吧,哈哈
作者:
高欢欢
时间:
2012-7-18 07:14
首先要先了解空指针异常:
空指针异常发生在对象为空,但是引用这个对象的方法。例如:String s = null; //对象s为空(null)int length = s.length();//发生空指针异常
1:所以肯定你定义的摸个对象为空,此代码中也就定义了 student[] s = new student[1]; s对象,可见s对象为空的。
2:此对象是个数组对象,再想想定义数组对象的时候都会有初始值,初始值是根据类型而定的,你并没有给 s 赋值,所以为 null ;
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2