public static void main(String[] args) {
    Long m = null;
    System.out.println(m);
    long n = m; // 18
    System.out.println(n);
  }运行结果:null
Exception in thread "main" java.lang.NullPointerException
at test.UTest.main(UTest.java:18)我想后面的那个应该是输出0的,可是不是请帮忙解释下:包装类型与原类型的关系?

解决方案 »

  1.   

    应该是运行long n = m;时,m对像调用了longValue()方法。 等待高手解答。。
      

  2.   

    当然不能哦,Long是封装类,long是基本数据类型,你不能吧Long的值赋给long型变量,所以会抛出.NullPointerException 。
    封装类,从本质上说就是,这些类把简单的数据类型封装到了类中,这样可以按引用传递的方式来传入它们!
      

  3.   

    18 这一行, 
    自动拆箱是调用 m 的 longValue()
    故会出现java.lang.NullPointerException