黑马程序员技术交流社区

标题: 疑惑 [打印本页]

作者: qmlovewhr    时间: 2013-8-17 23:04
标题: 疑惑
本帖最后由 qmlovewhr 于 2013-8-18 01:00 编辑

package it.huigu;
public class Test4 {
public static void main(String[] args) {
  ackage it.huigu;
public class Test4 {
public static void main(String[] args) {
  Test4 t=null;
  int i=4;
  while(i>0){
   if(i==2){
    t=new Test4();
    t.add(1, 2);
   }
   if(i==3){
    t.add(3, 4);
   }
   i--;
  }
}
public int add(int i,int j){
System.out.println(i+j);
return i+j;
}
}
在两个if条件句中,都有对象t,这两个t是一样的吗,另外在两个if语句中都有调用t对象的add方法,结果发现编译能通过,执行时报错?这是为什么

作者: x.love    时间: 2013-9-4 21:46
当4减到3的时候就会调用add方法,可是此时t对象是空呀。会出现空指针异常
作者: 赖龙威    时间: 2013-10-2 00:34
这。。。
首先这个t是同一个。然后报错是因为企图调用一个指向为空的对象。你自己看看自己的代码。是先执行第二条个if的。
ps:你为什么不把add方法声明为一个静态方法。。而且你在主函数里面调用这个方法也根本不需要用对象




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