package myFirst;public class TestBox {
Integer i;
int j;
public static void main(String[] args) {
TestBox t = new TestBox();
t.go();
}
public void go() {
j = i;
System.out.println(j);
System.out.println(i);
}
}抛出异常如下:
Exception in thread "main" java.lang.NullPointerException
at myFirst.TestBox.go(TestBox.java:11)
at myFirst.TestBox.main(TestBox.java:8)

解决方案 »

  1.   

    i都没赋值当然是NullPointerException,或者把j改成Integer类型
      

  2.   

    i为null...
      

  3.   

    i为空,你也可以吧i和j 设置为同样的数据类型。
      

  4.   

    i和j都没赋值,所以默认是null,null不能赋值给j,所以报错,给 i 和 j 赋个初始值的时候就行了。
      

  5.   

    integer是一个对象,默认初始话为null值。然后自己想下,道理是不是这样
      

  6.   

    一般报java.lang.NullPointerException的原因有以下几种: 
    1. 字符串变量未初始化; 
    String类型的对象可以做如下判断if(rb!==null&&!"".equals(rb)) 
    ……
     
    当然还可以多做一个判断,是否不为空字符串
     
    if(rb!==null&&!"".equals(rb.trim()))
    2. 接口类型的对象没有用具体的类初始化,比如: 
    List lt; 会报错 
    List lt = new ArrayList(); 则不会报错了 
    3. 当一个对象的值为空时,你没有判断为空的情况。 
    你可以试着把下面的代码加一行代码: 
    if(rb!=null);你的问题是对基本数据类型和引用数据类型较为模糊,建议你看下引用数据类型的自动拆装箱原理,具体可参考这个网址http://bbs.bjsxt.com/thread-5530-1-1.html
    我也在正在学习JAVA,欢迎互相交流!
      

  7.   

    你就只是声明了下,根本没实例化,没实例化是没办法拿来赋值的,你把Integer实例化了 应该就不会报错了。他们之间可以相互转化,会自动拆箱
      

  8.   

    首先,在java中局部变量优先于全局变量,你的i没有初始化,直接复制给j这就肯定会报空指针异常。
      

  9.   

    integer 没赋值是null  int是0  integer可以转化成int,int不能等于null
      

  10.   

    在 j = i ;这个地方这个是“自动拆箱”的过程,他实际上默认调用了intValue()方法,所以等效于
    j = i.intValue(); 而你的i 未赋值所以是null 用null 去掉用方法就会出现空指针异常(java.lang.NullPointerException).
    所以你有以下几种做法:
    1.把 j = i;改为i = j; 这个是“自动装箱”的过程,int类型的变量初始化之后是0 所以他实际上执行的是 i = new Integer(j);这个没什么问题;
    2.在j = i ; 之前给i赋值 如: i = 2;