public static void fun(Integer i){
i=i+2;
}
public static void main(String[] args) {
Integer p=new Integer(5);
fun(p);
System.out.println(p);
}
輸出的結果仍然是5,看起來包裝類作爲參數傳遞時,像是值傳遞。
實際上,仍舊是引用傳遞,而每次對Integer的賦值操作,都是創建了一個新的對象,並且給變量賦上新的地址值。
main函數中的p始終指向new Integer(5)這個對象。
而fun函數中,i指向了i+2運算後創建的新對象,此時i和main函數中的p指向了不同的Integer對象。