A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 黄云南 中级黑马   /  2012-3-18 12:23  /  1554 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

  1. class  Test
  2. {
  3.         public static void main(String[] args)
  4.         {
  5.                 Test2 a= new Test2();建立了一个Test2类对象
  6.                 Test2 b=null;
  7.                 b.main();
  8.         }
  9. }
  10. class  Test2
  11. {
  12.         public  void main()
  13.         {
  14.                 System.out.println("Hello World!");
  15.         }
  16. }
复制代码
我new了一个Test2的对象,那么Test2的main()应该就被加载进了方法区,
方法区的内容不是都是共享的吗?所以这样的话b去调用的话就应该没问题啊。
可是运行时报空指针异常?为什么?

2 个回复

倒序浏览
Test2 b=null;  null是一个空引用
声明 b 并指向一个空引用。当然什么都没有了,调用其方法b.main();就出空指针了。

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
声明一点:Test2中的main()方法只有在被对象调用时才被加载进内存
Test2 b=null;表示你让一个Test2对象b指向null
  b.main();肯定会抛异常
你想调用main方法,你用a.main()不就行了,呵呵

评分

参与人数 1技术分 +1 收起 理由
房宝彬 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马