黑马程序员技术交流社区

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

作者: 黑马-王鹏    时间: 2013-3-17 14:32
标题: 空指针异常问题
本帖最后由 黑马-王鹏 于 2013-3-17 22:41 编辑
  1. class Person
  2. {
  3.         public void checkName(String name)
  4.         {
  5.                
  6.                 //if(name.equals("lisi"))//NullPointerException
  7.                 if("lisi".equals(name))//if(name!=null && name.equals("lisi"))
  8.                         System.out.println("YES");
  9.                 else
  10.                         System.out.println("no");
  11.         }
  12. }

  13. main()
  14. {
  15.         Person p = new Person();
  16.         p.checkName(null);
  17. }
  18. //毕老师留下的代码,1.我想知道要怎样补充代码才会实现运行异常?
  19. //                   2.怎样才能避免空指针异常?
复制代码
希望可以解答详细点,谢谢!
作者: 何仕映    时间: 2013-3-17 15:11
因为equals需要对象去调用,但是与这个对象相比的可以是任何东西,包括为空(null).所以在checkName()里面判段的时候,你如果用if(name.equals("lisi")),在程序中就会产生异常,如果用if("lisi".equals(name)),则就只会输出是与不是。
下面是补全的代码(不会有异常):
  1. class Person

  2. {

  3.         public void checkName(String name)        //定义比对的方法

  4.         {
  5.             if("lisi".equals(name))                //这里需注意是lisi与传进来的比,还是传进来的值与lisi相比。

  6.                  System.out.println("YES");
  7.            else
  8.                  System.out.println("no");
  9.         }

  10. }
  11. class CheckDemo
  12. {
  13.         public static void main(String[] args)
  14.         {
  15.                 Person p = new Person();
  16.                  p.checkName(null);
  17.         }
  18. }
复制代码





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