黑马程序员技术交流社区

标题: 空指针异常??? [打印本页]

作者: 疯狂程序    时间: 2013-4-3 15:47
标题: 空指针异常???
本帖最后由 疯狂程序 于 2013-4-4 17:14 编辑



为什么求解啊啊
作者: 张源锋    时间: 2013-4-3 16:31
你的aa数组里面没放有对象,aa[3]是null,不能调用setX(int x) 这个方法。你要放一个对象到aa[3]这个位置才可以如:aa[3]=new Person();aa[3].setX(5);这样才会不抛指针异常
作者: 陈腾跃_2013    时间: 2013-4-3 16:37
楼上正解,创建的是Person类型的空数组,如果你这样搞(赋初值),就没问题
  1. package cty.show;

  2. public class Temp {

  3.         public static void main(String[] args) {

  4.                 Person[] p = new Person[]{new Person(),new Person()};
  5.                 p[0].setX(5);
  6.                
  7.                 System.out.println(p[0].getX());
  8.         }
  9. }

  10. class Person
  11. {
  12.         public int x;
  13.         int y;
  14.         public void setX(int x)
  15.         {
  16.                 this.x = x;
  17.         }
  18.        
  19.         public int getX()
  20.         {
  21.                 return x;
  22.         }
  23. }
复制代码

作者: 朱晓杰    时间: 2013-4-3 16:53
楼上两位解释的非常到位呢,学习咧!
作者: 庞立森    时间: 2013-4-3 17:04
无奈№追夜 发表于 2013-4-3 16:31
你的aa数组里面没放有对象,aa[3]是null,不能调用setX(int x) 这个方法。你要放一个对象到aa[3]这个位置才 ...

报的是空指针异常错误,你建立一个Person类的数组,给他定义了长度,但是你却没有给他赋对象,
所以会报错空指针异常,还有就是你都没有实力化怎么可以在主函数中调用非静态的setx()方法呢,
正确的如下:
aa[3]=new Person();
aa[3].setX();

作者: 李力    时间: 2013-4-4 13:01
学习了!
作者: 王川    时间: 2013-4-4 14:17
对象数组初始的时候默认赋值为null,所以,你没有给aa[3]实际赋值为一个Person对象,实际用的是null对象,就报错了{:soso_e144:}
作者: 打工人    时间: 2013-4-4 16:29
若还有问题,继续追问; 没有的话,尽量及时将帖子分类改成【已解决】~




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2