不同情况当 Integer 和 int 可以互换使用时

案例 1: 在方法参数的位置使用。

如果方法需要包装类的对象作为参数。然后可以互换地将参数传递给相应基元类型的变量,反之亦然。

例:

int i;
Integer j;
void ex_method(Integer i)//Is a valid statement
void ex_method1(int j)//Is a valid statement

案例 2: 传递返回值时:

当方法返回基本类型变量时,相应包装类的对象可以作为返回值交替传递,反之亦然。

例:

int i;
Integer j;
int ex_method()
{...
return j;}//Is a valid statement
Integer ex_method1()
{...
return i;//Is a valid statement
}

案例 3: 执行操作时。

每当对数字执行操作时,原始类型变量和相应包装类的对象可以互换使用。

int i=5;
Integer j=new Integer(7);
int k=i+j;//Is a valid statement
Integer m=i+j;//Is also a valid statement

陷阱 :记住初始化或为包装类的对象赋值。

虽然使用包装类对象和原始变量可以互换但永远不会忘记或错过初始化或为包装类对象赋值,否则它可能在运行时导致空指针异常。

例:

public class Test{
    Integer i;
    int j;
    public void met()
    {j=i;//Null pointer exception
    SOP(j);
    SOP(i);}   
    public static void main(String[] args)
    {Test t=new Test();
    t.go();//Null pointer exception
    }

在上面的例子中,对象的值是未分配的和未初始化的,因此在运行时程序将运行到空指针异常。从上面的例子中可以清楚地看到,对象的值永远不应该保持未初始化和未分配。