不同情況當 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
}
在上面的例子中,物件的值是未分配的和未初始化的,因此在執行時程式將執行到空指標異常。從上面的例子中可以清楚地看到,物件的值永遠不應該保持未初始化和未分配。